Je cherche une bonne explication sur la façon de tester une procédure stockée Oracle dans SQL Developer ou Embarcardero Rapid XE2. Je vous remercie.
Quelque chose comme
create or replace procedure my_proc( p_rc OUT SYS_REFCURSOR )
as
begin
open p_rc
for select 1 col1
from dual;
end;
/
variable rc refcursor;
exec my_proc( :rc );
print rc;
fonctionnera dans SQL * Plus ou SQL Developer. Je n'ai aucune expérience avec Embarcardero Rapid XE2, donc je ne sais pas s'il prend en charge les commandes SQL * Plus comme celle-ci.
Quelque chose comme cela vous permet de tester votre procédure sur presque tous les clients:
DECLARE
v_cur SYS_REFCURSOR;
v_a VARCHAR2(10);
v_b VARCHAR2(10);
BEGIN
your_proc(v_cur);
LOOP
FETCH v_cur INTO v_a, v_b;
EXIT WHEN v_cur%NOTFOUND;
dbms_output.put_line(v_a || ' ' || v_b);
END LOOP;
CLOSE v_cur;
END;
Fondamentalement, votre faisceau de test doit prendre en charge la définition d'une variable SYS_REFCURSOR
et la possibilité d'appeler votre procédure tout en transmettant la variable que vous avez définie, puis en parcourant le jeu de résultats du curseur. PL/SQL fait tout cela, et les blocs anonymes sont faciles à configurer et à gérer, assez adaptables et assez lisibles par quiconque travaille avec PL/SQL.
Une autre façon, bien que similaire, serait de créer une procédure nommée qui fasse la même chose, et en supposant que le client dispose d’un débogueur (comme SQL Developer, PL/SQL Developer, TOAD, etc.), vous pouvez ensuite exécuter l’exécution.
Dans SQL Developer, vous pouvez cliquer avec le bouton droit sur le corps du package, puis sélectionner Exécuter. La fenêtre 'Run PL/SQL' vous permettra d'éditer le bloc PL/SQL. En cliquant sur OK, une sous-fenêtre intitulée «Variables de sortie - Journal» avec un onglet Variables de sortie apparaît. Vous pouvez sélectionner vos variables de sortie à gauche et le résultat est affiché à droite. Très pratique et rapide.
J'ai utilisé Rapid avec T-SQL et je pense qu'il y avait quelque chose de similaire à cela.
Écrire votre propre script delcare-begin-end où vous parcourez le curseur, comme dans l'exemple de DCookie, est toujours un bon exercice à faire de temps en temps. Cela fonctionnera avec n'importe quoi et vous saurez que votre code fonctionne.
Dans Toad 10.1.1.8, j'utilise:
variable salida refcursor
exec MY_PKG.MY_PRC(1, 2, 3, :salida) -- 1, 2, 3 are params
print salida
Ensuite, exécutez en tant que script.
create or replace procedure my_proc( v_number IN number,p_rc OUT SYS_REFCURSOR )
as
begin
open p_rc
for select 1 col1
from dual;
end;
/
puis écrivez une fonction mentez ce qui appelle votre procédure stockée
create or replace function my_proc_test(v_number IN NUMBER) RETURN sys_refcursor
as
p_rc sys_refcursor;
begin
my_proc(v_number,p_rc);
return p_rc;
end
/
alors vous pouvez exécuter cette requête SQL dans l'éditeur SQLDeveloper.
SELECT my_proc_test(3) FROM DUAL;
vous verrez le résultat dans la console, cliquez dessus avec le bouton droit de la souris, cilckez sur la vue d'un enregistrement et modifiez le résultat. Vous pouvez voir tous les enregistrements renvoyés par le curseur de référence.
Je pense que ce lien vous suffira. Je l'ai trouvé lorsque je cherchais un moyen d'exécuter les procédures Oracle.
Brève description:
--cursor variable declaration
variable Out_Ref_Cursor refcursor;
--execute procedure
execute get_employees_name(IN_Variable,:Out_Ref_Cursor);
--display result referenced by ref cursor.
print Out_Ref_Cursor;