Retornando tablas con PL/SQL
Publicado por Quantum (1 intervención) el 12/07/2006 12:54:43
Tengo un par de dudas sobre PL/SQL.
Necesito devolver varios valores de un PROCEDURE o una FUNCTION, pero no se como hacerlo.
Para devolver un solo valor de una función no tengo problemas, por ejemplo:
FUNCTION valor (in_valor VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN ('Tu valor es :' || in_valor);
END;
y para ejecutar la función i recuperar el valor hago un
SELECT valor('valor a introducir') FROM DUAL
y me devuelve en el select el: "Tu valor es :valor a introducir"
Hasta ahí todo perfecto, però, cuando quiero devolver varios valores o una tabla entera ya no se como hacerlo. La funcion return solo te permite devolver un único valor.
He visto que se pueden definir variables de salida OUT en una funcion o un procedimeinto, tantas como quieras, però si hago esto no sé como recuperarlas como hacia con la función con el select from dual.
También he visto que existe el comando dbms_output.put_line pero no sé si esto me sirve a mi ni como recuperar valores de ahí tampoco. :(
alguien me puede orientar un poco?
Necesito devolver varios valores de un PROCEDURE o una FUNCTION, pero no se como hacerlo.
Para devolver un solo valor de una función no tengo problemas, por ejemplo:
FUNCTION valor (in_valor VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN ('Tu valor es :' || in_valor);
END;
y para ejecutar la función i recuperar el valor hago un
SELECT valor('valor a introducir') FROM DUAL
y me devuelve en el select el: "Tu valor es :valor a introducir"
Hasta ahí todo perfecto, però, cuando quiero devolver varios valores o una tabla entera ya no se como hacerlo. La funcion return solo te permite devolver un único valor.
He visto que se pueden definir variables de salida OUT en una funcion o un procedimeinto, tantas como quieras, però si hago esto no sé como recuperarlas como hacia con la función con el select from dual.
También he visto que existe el comando dbms_output.put_line pero no sé si esto me sirve a mi ni como recuperar valores de ahí tampoco. :(
alguien me puede orientar un poco?
Valora esta pregunta


0