Oracle - manejo de sys_refcursor

   
Vista:

manejo de sys_refcursor

Publicado por angel (1 intervención) el 01/06/2008 07:47:16
alguein me podira orientar sobre el manejo de esto o por lo menos facilitarme links donde lo expliquen gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:manejo de sys_refcursor

Publicado por Rodolfo Reyes (445 intervenciones) el 02/06/2008 17:37:48
Te pongo un ejemplo:

Con este pequeño còdigo explico como mostrar un refcursor desde Pl/sql, muy ùtil para cuando necesitas comprobar datos, o simplemente procesarlos

-- Creado pro Hector Gabriel Ulloa Ligarius
-- 27 de Julio del 2005
-- Como mostrar un refcursor desde PL/SQL

--------------------
--Código del package
--------------------

create or replace PACKAGE ejemplo_package IS
--Declaro el tipo ref cursor
TYPE var_refcursor IS REF CURSOR;

--Declaro la función que retorna el ref cursor
FUNCTION retorna_datos RETURN var_refcursor;
END ejemplo_package;
/

create or replace PACKAGE BODY ejemplo_package IS

FUNCTION retorna_datos RETURN var_refcursor IS
var_cursorpackage var_refcursor;

BEGIN
OPEN var_cursorpackage FOR
SELECT table_name ,
tablespace_name
FROM user_tables
WHERE rownum < 10 --Sólo muestro 9 , pues es un ejemplo
;

RETURN var_cursorpackage;
END;
END ejemplo_package;
/

----------------------------
--Código de un bloque Pl/Sql
----------------------------
declare

--Declaración de la variable de tipo REF CURSOR
v_refcursor ejemplo_package.var_refcursor;

--Declaración de variables para dejar los valores rescatados desde el REF CURSOR
vtable_name varchar2(1000);
vtablespace_name varchar2(1000);

begin
--Se llama al package que retorna los datos desde un cursor
v_refcursor := ejemplo_package.retorna_datos;

--Se rescata el valor desde elref cursor haciendo un fetch
FETCH v_refcursor
INTO vtable_name ,
vtablespace_name;

WHILE v_refcursor%FOUND LOOP
dbms_output.put_line('Nombre : '||vtable_name||' ,Tablespace : '||vtablespace_name);
FETCH v_refcursor
INTO vtable_name ,
vtablespace_name;
END LOOP;

--Se cierra el cursor que fue abierto al momento de realizar la llamada al package
CLOSE v_refcursor;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:manejo de sys_refcursor

Publicado por Nestor Rodriguez (1 intervención) el 11/09/2008 16:56:49
Que buen ejemplo descriptivo, conciso y funcional, gracias hermano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:manejo de sys_refcursor

Publicado por jorge (1 intervención) el 27/04/2009 23:14:03
En caso de hacer un insert en ORACLE, como se haría con la invocación desde .Net
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar