variable - procedimiento almacenado con cursor en oracle
¿Cómo probar un procedimiento almacenado de Oracle con el tipo de retorno RefCursor? (6)
Algo como
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;
funcionará en SQL * Plus o SQL Developer. No tengo ninguna experiencia con Embarcardero Rapid XE2, así que no tengo idea de si es compatible con comandos SQL * Plus como este.
Estoy buscando una buena explicación sobre cómo probar un procedimiento almacenado de Oracle en SQL Developer o Embarcardero Rapid XE2. Gracias.
Algo como esto le permite probar su procedimiento en casi cualquier cliente:
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;
Básicamente, el arnés de prueba debe admitir la definición de una variable SYS_REFCURSOR
y la capacidad de invocar su procedimiento al pasar la variable que definió, y luego recorrer el conjunto de resultados del cursor. PL / SQL hace todo eso, y los bloques anónimos son fáciles de configurar y mantener, bastante adaptables y bastante legibles para cualquiera que trabaje con PL / SQL.
Otra, aunque similar, sería crear un procedimiento con nombre que haga lo mismo y, suponiendo que el cliente tenga un depurador (como SQL Developer, PL / SQL Developer, TOAD, etc.), podría pasar por la ejecución.
Creo que este enlace será suficiente para ti. Lo encontré cuando estaba buscando la forma de ejecutar procedimientos de oráculo.
Breve descripción:
--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;
En SQL Developer puede hacer clic derecho en el cuerpo del paquete y luego seleccionar RUN. La ventana ''Ejecutar PL / SQL'' le permitirá editar el bloque PL / SQL. Al hacer clic en Aceptar, obtendrá un panel de ventana titulado ''Variables de salida - Registro'' con una pestaña de variables de salida. Puede seleccionar sus variables de salida a la izquierda y el resultado se muestra en el lado derecho. Muy práctico y rápido.
He usado Rapid con T-SQL y creo que había algo similar a esto.
Escribir su propio script delcare-begin-end donde recorre el cursor, como en el ejemplo de DCookie, siempre es un buen ejercicio para hacer de vez en cuando. Funcionará con cualquier cosa y sabrá que su código funciona.
En Toad 10.1.1.8 utilizo:
variable salida refcursor
exec MY_PKG.MY_PRC(1, 2, 3, :salida) -- 1, 2, 3 are params
print salida
Luego, ejecutar como 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;
/
y luego escribe una función miente esto que llama a tu procedimiento almacenado
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
/
luego puede ejecutar esta consulta SQL en el editor SQLDeveloper.
SELECT my_proc_test(3) FROM DUAL;
verá el resultado en la consola, haga clic derecho sobre él y cilck en la vista de registro único y edite el resultado; puede ver todos los registros que fueron devueltos por el cursor de referencia.