Exécuter une Procédure Stockée dans SQL Developer?
Je suis en train d'exécuter une procédure stockée qui a plusieurs dans et hors les paramètres. La procédure ne peut être considéré dans mes Connexions du panneau en accédant à d'Autres Utilisateurs | | Packages | |
Si je clic droit , les éléments de menu sont "Membres de l'Ordre Par..." et "Créer un Test Unitaire" (en grisé). La capacité à "Exécuter", la procédure ne semble pas possible quand il est accessible par l'utilisateur.
J'ai essayé de trouver un exemple de comment créer un bloc anonyme pour que je puisse exécuter la procédure en tant que fichier SQL, mais je n'ai rien trouvé qui fonctionne.
Personne ne sait comment je peut exécuter cette procédure à partir de SQL Developer? Je suis l'aide de la Version 2.1.1.64.
Merci d'avance!
EDIT 1:
La procédure que j'ai envie d'appeler a cette signature:
user.package.procedure(
p_1 IN NUMBER,
p_2 IN NUMBER,
p_3 OUT VARCHAR2,
p_4 OUT VARCHAR2,
p_5 OUT VARCHAR2,
p_6 OUT NUMBER)
Si j'écris mon bloc anonyme comme ceci:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, :out1, :out2, :out3, :out4);
END;
J'obtiens l'erreur:
Bind Varialbe "out1" is NOT DECLCARED
anonymous block completed
J'ai essayé de l'initialisation de la sortie* variables:
out1 VARCHAR2(100) := '';
mais le même message d'erreur:
EDIT 2:
Basé sur Alex réponse, j'ai essayé de supprimer les deux points à partir de l'avant de la params et d'obtenir ceci:
Error starting at line 1 in command:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, out1, out2, out3, out4);
END;
Error report:
ORA-06550: line 13, column 17:
PLS-00103: Encountered the symbol "USER" when expecting one of the following:
:= . ( @ % ; immediate
The symbol ":=" was substituted for "USER" to continue.
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
- double possible de Meilleur moyen/outil pour obtenir les résultats à partir d'un package oracle procédure
- Essayez de mettre de la sur les variables à l'intérieur de la COMMENCER, avant l'exécution de la procédure de déclaration.
- Vous n'avez pas besoin de la
execute
; en PL/SQL qui est interprété comme le début deexecute immediate
, qui est différente de SQLexecute
. - Retrait "exécuter" n'est pas de faire une différence. Je reçois toujours "Lier des Variables...n'est PAS DÉCLARÉE".
- Si le DECLARE section est à l'intérieur du bloc begin (c'est à dire de COMMENCER à DÉCLARER ... EXÉCUTER... FIN, j'obtiens toujours la même lier des variables d'erreur.
- vous êtes à la confusion de deux approches maintenant, avec votre edition 2 version il suffit de retirer le mot
execute
. Ledeclare
devrait être avant l'begin
. Ce que je pense @OMG voulais dire, c'est que vous pouvez déclarer les variables dans SQL Developer avant le bloc anonyme avec levariable
mot-clé, puis utiliser le:out1
syntaxe que vous aviez à l'origine, dans ce cas, vous n'avez pas dedeclare
section à tous. Mais vous avez mélangé les deux à partir de votre dernier commentaire. - Yep, je savais que j'étais confus, mais n'était pas tout à fait sûr où/comment.
Vous devez vous connecter pour publier un commentaire.
Avec de simples types de paramètre (c'est à dire pas refcursors etc.) vous pouvez faire quelque chose comme ceci:
Édité utilisation de l'OP spec, et avec une approche alternative pour utiliser
:var
lier les variables::var
façon. J'aimerais utiliser ledeclare
chemin par défaut si je faisais quoi que ce soit avec PL/SQL; mais je pourrais utiliser:var
si, par exemple, j'ai été en utilisant un peu de code existant copié à partir de la Pro*C, qui avaient déjà la syntaxe et je ne voulais pas toucher à la parms dans l'appel.:
(en fait, il ne fonctionne pas avec elle).Exécution facile. Obtenir les résultats peuvent être difficiles.
Prendre un coup d'oeil à cette question, j'ai demandé à Meilleur moyen/outil pour obtenir les résultats à partir d'un package oracle procédure
Le résumé de l', il va comme ceci.
En supposant que vous avez eu un Paquet nommé mypackage et de la procédure appelée getQuestions. Elle renvoie une refcursor et prend dans la chaîne de nom d'utilisateur.
Tout ce que vous avez à faire est de créer un nouveau Fichier SQL (nouveau fichier). Définition de la connexion et de le coller dans la suite et l'exécuter.
Pour ceux qui utilisent SqlDeveloper 3+, dans le cas où vous avez manqué que:
SqlDeveloper a la particularité d'exécuter des procédures stockées/fonction directement, et les résultats sont affichés dans un format facile à lire de manière.
Juste à droite, cliquez sur le paquet ou stockées proc/fonction stockée, Cliquez sur
Run
et choisisseztarget
être le proc/func vous souhaitez exécuter, SqlDeveloper va générer le fragment de code à exécuter (de sorte que vous pouvez mettre vos paramètres d'entrée). Une fois exécuté, les paramètres de sortie sont affichés dans la moitié inférieure de la boîte de dialogue, et même de la prise en charge intégrée pour le curseur ref: résultat de curseur s'affichent comme une sortie séparée onglet.L'ouverture de la procédure dans SQL Developer et l'exécuter à partir de là. SQL Developer affiche le SQL qu'il exécute.
Utilisation:
Remplacer "NOM_DU_PACKAGE", "PROCEDURE_NAME", et "parameter_value" avec ce que vous avez besoin. Les paramètres de SORTIE doivent être déclarées avant.
Aucun de ces réponses a fonctionné pour moi. Voici ce que j'avais à faire pour exécuter une procédure en SQL Developer 3.2.20.10:
Et puis il faudrait aller consulter le tableau pour quel que soit votre proc était censé faire avec ce passé-variable-la sortie sera juste de confirmer que la variable a reçu la valeur (et, en théorie, qu'elle a transmis au proc).
NOTE (différences avec le mien vs d'autres):
:
avant le nom de la variable.package.
ou.packages.
entre le nom du schéma et le nom de la procédure&
dans la valeur de la variable.print
n'importe oùvar
pour déclarer la variableTous ces problèmes m'a laissé me gratter la tête pour la plus longue et la réponse à ces questions qu'ont ces erreurs flagrantes être prises et le goudron et les plumes.
Bien que cette question est assez vieux, je continue d'achoppement en même résultat sans trouver un moyen facile de courir à partir de sql developer.
Après quelques essais, j'ai trouvé un moyen simple pour exécuter la procédure stockée dans sql developer lui-même.
Sous packages, sélectionnez votre forfait désiré et cliquez droit sur le nom du package (pas sur le nom de la procédure stockée).
Vous trouverez l'option exécuter. Sélectionner et fournir les arguments requis. Cliquez sur OK et vous pouvez voir le résultat dans des variables de sortie de la section ci-dessous
Je suis en utilisant SQL developer version 4.1.3.20
Ne peux pas le croire, ce ne sera pas exécuté dans SQL Developer:
MAIS ce sera:
Évidemment, tout doit être sur une seule ligne..
execute
commande] état. Ce n'est pas une réponse à la question qui a été posée bien, et a été couverts des réponses à d'autres questions avant de toute façon.À l'aide de SQL Developer Version 4.0.2.15 Construire 15.21 les ouvrages suivants:
var
avant les variables NE fonctionne PAS - au moins dans SQL Developer 3.2.20.10, et de ne pas utiliser de virgules en face d'eux - pas besoin d'elle, de nouveau, au moins dans 3.2.20.10 (seule raison pour laquelle je n'ai pas le droit de voter ce vers le bas ou le modifier). Aussi aurait besoin d'un point-virgule aprèsSET SERVEROUTPUT ON
.Je n'ai pas pu obtenir de @Alex Poole réponses de travail. Cependant, par essai et erreur, j'ai trouvé les ouvrages suivants (à l'aide de SQL Developer version 3.0.04). Le poster ici au cas où il aide les autres:
var
à chaque variable dans ledeclare
bloc, qui n'est pas valide. Essayez d'exécuter cette donne de la " PLS-00103: Rencontré le symbole "NOMBRE" lorsque attend que l'un des suivants ...", et des erreurs similaires à l'encontre de cinq autres variables.var
, et je n'ai pas besoin d'utiliser.package.
dans mon appel, au moins dans 3.2.20.10, qui ne doit pas avoir été tellement différent, et eu des erreurs quand je l'ai fait. Gaspillé beaucoup de temps avec cette réponse.La création de Pl/SQL bloc peut être douloureux si vous avez beaucoup de procédures qui ont beaucoup de paramètres. Il y a un application écrit sur python, que le faire pour vous.
Il traite le fichier avec les déclarations de procédure et crée l'application web pour la pratique de la procédure des appels.