PDA

Ver la Versión Completa : Devolver varios registro desde SP


lucasarts_18
23-12-2005, 04:39:55
Hola a todos:

Tengo una duda, como puedo devolver una consulta de varios registros desde un procedimiento almacenado.

Mas especificamente así:


begin
select * from
tabla;
end;


Saludos..

lucasarts_18
26-12-2005, 19:19:16
Hola a todos:

He encontrado la solución:


CREATE OR REPLACE PROCEDURE SP_AGE_S_GRUPO_USUARIO

(IN_USUARIO IN CHAR,
--OUT_GRUPO OUT VARCHAR)
pLista OUT CURSOR_GRUPOS
)

IS

V_COD_GRUPO VARCHAR(15);

TYPE GRUPOS IS RECORD (
CODIGO VARCHAR(5),
DESCRIPCION VARCHAR(40)
);

TYPE CURSOR_GRUPOS IS
REF CURSOR RETURN GRUPOS;



BEGIN
--SELECT COD_GRUPO INTO V_COD_GRUPO
--FROM USUARIO
--WHERE COD_USUARIO = IN_USUARIO;

--OUT_GRUPO := V_COD_GRUPO;

OPEN pLISTA FOR
SELECT * FROM USUARIO;
END;



Solo que esto funciona desde un package y no de un Procedimiento Almacenado, ya que no permite declarar el cursor como parametro, desde un package claro que sí.

Hasta Luego -

lucasarts_18
27-12-2005, 15:16:57
Hola:

Ahora dejo el ejemplo desde un package lo cual se logra resolver mi inquitud que tenía al momento de abrir el hilo..


Create Or Replace Package Mantenedor_Usuarios is

-- Public type declarations
--type <TypeName> is <Datatype>;
TYPE c_LISTA IS REF CURSOR;

END Mantenedor_Usuarios;

Create Or Replace Package Body Mantenedor_Usuarios is

PROCEDURE SP_S_LEER_GRUPOS (
LISTAR_GRUPOS OUT c_LISTA);

--implementation

PROCEDURE SP_S_LEER_GRUPOS (
LISTAR_GRUPOS OUT c_LISTA)
IS
BEGIN
OPEN LISTAR_GRUPOS
FOR SELECT * FROM GRUPO;
END;

END Mantenedor_Usuarios;



Esto no se puede hacer desde un Procedimiento Almacenado...:mad:

Hasta Luego -