J'ai pu créer une procédure stockée pour une base de données Oracle, mais je ne peux maintenant comprendre comment l'exécuter. J'utilise Squirrel SQL et cela a travaillé pour créer la procédure:
CREATE OR REPLACE PROCEDURE MyProc(label IN varchar2, results OUT sys_refcursor) AS
BEGIN
OPEN results FOR
SELECT Label, Count, Timestamp
FROM table1
LEFT JOIN table2 ON table1.Name=table2.Name
WHERE table1.Label=label
ORDER BY Timestamp;
END;
/
5 Réponses :
var v_result sys_refcursor
exec MyProc ('test label',:v_result)
Je n'ai pas SQL * Plus, j'utilise Squirrel SQL, cela ne fonctionne donc pas. :(
Cette syntaxe est spécifique à Oracle. Avez-vous installé Oracle Plugin dans SQL Squirrel? Squirrelsql.org/index.php?page=plugins
Il est indiqué que le plugin est installé, mais je reçois une ora-00900: erreur de relevé SQL non valide ...
La seule syntaxe que je reçois travailler dans Squirrel SQL est PL / SQL Block: strong> declare
v_label varchar2:='SOMELABEL';
TYPE ref_cursor IS REF CURSOR;
v_cur_results ref_cursor;
begin
MyProc (v_label, v_cur_results)
end;
/
Lisez la question à nouveau - le questionneur a déjà su que connu appel code>.
Le lien vers l'article est mort
Les travaux suivants pour exécuter une procédure stockée: oui, la barre oblique à la fin forte> est nécessaire! p> Le / (slash) p>
Exécute la commande SQL la plus récente ou le bloc PL / SQL exécuté qui
est stocké dans le tampon SQL. P>
[...] p>
blockQuote> Commencez ... fin; code> déclare un bloc pl / sql em> (spécifique à Oracle). La barre oblique est la commande pour exécuter le bloc. P>
Comment cela répond-il à la question? @ La procédure stockée de Kayeight a deux paramètres: une dans, et une sortie. Alors, comment appelle-t-on une procédure stockée avec un paramètre «OUT», via Squirrel SQL? Si le commence à procéder à la procédure; finir; / code> La syntaxe est supérieure à appeler la procédure; code>, veuillez expliquer pourquoi.
.. est nécessaire .. i> comme les 2 points de vue plutôt que 3 points-virgules!
Je me suis lutté avec cela depuis longtemps, mais j'ai réussi à faire fonctionner comme ceci:
{call DBMS_SESSION.SET_CONTEXT ( namespace => 'clientcontext', attribute => 'foo', value => 'bar' )}
@ La réponse de Dovka semble être la seule qui répond à la question. Kayeight ne demandait pas comment appeler les procédures d'Équirrel. Le titre actuel de la question "Appelant une procédure stockée Oracle dans Squirrel SQL" est trompeur.