2009-06-04 5 views
9

Sto lavorando a un progetto ASP.NET con un database Oracle. Stiamo utilizzando TOAD per aggiungere/gestire le stored procedure e, in generale, mi piace TOAD e Oracle. L'unica cosa che ho trovato frustrante è trovare un modo semplice per testare un Oracle Stored Proc, come la sintassi "exec [SP_NAME] Param1, Param2, ParamN" di SQL Server.Il metodo più semplice per testare una stored procedure Oracle

Tutte le stored procedure restituiscono i cursori. Ecco un esempio di Processione memorizzata:

 
CREATE OR REPLACE PROCEDURE APP_DB1.GET_JOB 
(
    p_JOB_ID IN JOB.JOB_ID%type, 
    outCursor OUT MYGEN.sqlcur 
) 
IS 
BEGIN 
    OPEN outCursor FOR 
    SELECT * 
    FROM JOB 
    WHERE JOB_ID = p_JOB_ID; 
END GET_JOB; 
/

Qualche suggerimento?

risposta

13

Hai solo bisogno di uno script che chiama la stored procedure e ha una variabile di legatura per l'uscita del cursore ref per visualizzarla nella griglia di rospo Editor finestra.

DECLARE 
type result_set is ref cursor; 
BEGIN 
APP_DB1.GET_JOB(1, :result_set); 
END; 

Quando poi si esegue questo ROSPO vi verrà chiesto di 'bind': result_set, basta selezionare il cursore rif dalla lista dei tipi e quindi il risultato viene visualizzato nella griglia. Il trucco è pensare a te stesso come a un "client" che chiama la tua stored procedure e hai bisogno del tuo cursore di riferimento per memorizzare il risultato.

+0

Anche se speravo in una dichiarazione di una riga, il metodo più semplice che ho visto. Grazie. – Josh

+0

Questo consiglio mi ha davvero aiutato. Grazie! – NickSuperb

1

Se solo in cerca di un modo per richiamare l'SP, poi il modo in cui Oracle è:

begin 
    sp_name(....); 
end; 

Non faccio uso di rospo, ma si dovrebbe essere in grado di mettere questo in una finestra di SQL ed eseguire esso.

+0

Ho aggiornato la domanda in modo da poter vedere che utilizziamo i cursori di riferimento per l'output. Per questo motivo non possiamo usare il tuo esempio sopra. – Josh

1

In sqplus è possibile utilizzare la sintassi

SQL> var rc refcursor

SQL> exec APP_DB1.GET_JOB (l'id lavoro che si desidera interrogare,: rc)

SQL> RC stampa

Che dovrebbe farlo. La prima riga definisce una variabile di binding. Si potrebbe anche definire una variabile per l'id di lavoro, o semplicemente digitare in.

+0

Ho bisogno del set di risultati in una griglia, come SQL Server, quindi sto cercando un modo per farlo in TOAD. – Josh

0

TOAD mostra il risultato in una griglia perfettamente con script di esempio di Russel. Esegui come script.

variable P_CUR refcursor; 
exec PACK.GETEXECUTION ('9f363e49-88c1-4295-b61e-60812d620d7e', '6', :P_CUR); 
print P_CUR; 

Grazie!