Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/01/2008, 17:25
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Re: Procedimiento Almacenado

Hola,

Cita:
Luego para manejar dicho resultado deberé recorrer tal cursor para recien poder visualizarlo...
No necesitas recorrer el sys_refcursor para visualizarlo, es decir, si lo que quieres hacer es ver el conjunto de resultados devuelto por el cursor por razones de debug y simplemente para ver que resultados hay, tienes la siguiente forma:

Creo una tabla de ejemplo y le cargo algunos datos.

Código:
SQL> create table t1 ( id number, name varchar2(20));

Table created.

SQL> insert into t1 values (1,'name 1');

1 row created.

SQL> insert into t1 values (2,'name 2');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;

        ID NAME
---------- --------------------
         1 name 1
         2 name 2
Un procedimiento que hace un select sobre la tabla y devuelve un sys_refcursor con los datos.

Código:
SQL> create or replace procedure p1
  2  (c1 out sys_refcursor)
  3  as
  4  begin
  5  open c1 for select * from t1;
  6  end;
  7  /

Procedure created.
Finalmente, el codigo para ejecutar el procedimiento y visualizar el resultado en SQL*Plus.

Código:
SQL> variable c1 refcursor;
SQL> execute p1(:c1);

PL/SQL procedure successfully completed.

SQL> print c1;

        ID NAME
---------- --------------------
         1 name 1
         2 name 2
Cada herramienta de base de datos que trabaja con Oracle, ya sea TOAD, SQL Navigator, PL/SQL Developer, SQL*Plus, etc, tiene su propia forma de mostrar el resultado de un sys_refcursor sin necesidad de que te tomes el trabajo de recorrerlo.

Saludos