2009-06-04 31 views
9

Estoy trabajando en un proyecto ASP.NET con una base de datos Oracle. Estamos usando TOAD para agregar/administrar los procedimientos almacenados, y en general me gustan los procesos TOAD y Oracle. Lo único que encuentro frustrante es encontrar una forma sencilla de probar Oracle Stored Proc, como la sintaxis "exec [SP_NAME] Param1, Param2, ParamN" de SQL Server.Método más sencillo para probar un procedimiento almacenado de Oracle

Todos nuestros procedimientos almacenados generan cursores de Ref. Aquí hay un ejemplo de un proceso almacenado:

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

¿Alguna sugerencia?

Respuesta

13

Solo necesita un script que llame al procedimiento almacenado y tenga una variable de vinculación para que la salida del cursor de referencia lo muestre en la cuadrícula de TOAD en el Editor ventana.

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

Cuando a continuación, ejecuta este SAPO se le pedirá que 'bind': RESULT_SET, sólo tiene que seleccionar el cursor ref de la lista de tipos y luego el resultado se mostrará en la cuadrícula. El truco es pensar en ti mismo como un "cliente" que llama a tu procedimiento almacenado y necesitas tu propio cursor de referencia para almacenar el resultado.

+0

Aunque esperaba una declaración de una línea, el método más fácil que he visto. Gracias. – Josh

+0

Este consejo realmente me ayudó. ¡Gracias! – NickSuperb

1

Si sólo en busca de una manera de invocar el SP, la forma de Oracle es:

begin 
    sp_name(....); 
end; 

No consumo sapo, pero usted debería ser capaz de poner esto en una ventana de SQL y ejecutar eso.

+0

He actualizado la pregunta para que pueda ver que usamos ref cursores para la salida. Por eso no podemos usar tu ejemplo anterior. – Josh

1

En sqplus puede utilizar la sintaxis

SQL> var rc refcursor

SQL> APP_DB1.GET_JOB ejecutivo (el ID de trabajo que desea consultar,: RC)

SQL> rc de impresión

Eso debería hacerlo. La primera línea define una variable de vinculación. También puede definir una variable para el ID de trabajo o simplemente escribirlo.

+0

Necesito el conjunto de resultados en una grilla, como SQL Server, entonces estoy buscando una forma de hacerlo en TOAD. – Josh

0

TOAD muestra el resultado en una cuadrícula muy bien con el script de muestra de Russel. Ejecutar como script

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

¡Gracias!

Cuestiones relacionadas