11
votes

Appeler une procédure stockée Oracle dans Squirrel SQL

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;
/


1 commentaires

@ 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.


5 Réponses :


0
votes
var v_result sys_refcursor

exec MyProc ('test label',:v_result)

3 commentaires

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 ...



4
votes

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;
/


0 commentaires


17
votes

2 commentaires

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; / La syntaxe est supérieure à appeler la procédure; , veuillez expliquer pourquoi.


.. est nécessaire .. comme les 2 points de vue plutôt que 3 points-virgules!



0
votes

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' )}


0 commentaires