Oracle - MENSAJES DE TEXTO PL/SQL

   
Vista:

MENSAJES DE TEXTO PL/SQL

Publicado por jk (9 intervenciones) el 08/09/2008 22:49:06
ESTOY TRABAJANDO EN PL/ORACLE Y NECESITO RETORNAR UNA SERIE DE DATOS PERO NO SE COMO HACERLO
" dbms_output.put_line('HOLA'), ME DEVUELVE SOLO LA PALABRA hola, PERO SI QUIERO REALIZAR UN SELECT A UN ATABLA NO ME DEJA,
ME APARECE EL SIGUENITE MENSAJE: ORA-01422: exact fetch returns more than requested number of rows,
COMO PUEDO HACER PARA MOSTRAR TODOS LOS DATOS QUE QUIERO.

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:MENSAJES DE TEXTO PL/SQL

Publicado por Rodolfo Reyes (59 intervenciones) el 09/09/2008 18:34:07
Tienes que utilizar un Ref Cursor. 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:MENSAJES DE TEXTO PL/SQL

Publicado por Humberto (1 intervención) el 17/04/2012 22:36:19
te esta retornando mas de una fila tu consulta, agregale el and rownum = 1
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