Oracle - Función que devuelva mas de una variables

 
Vista:

Función que devuelva mas de una variables

Publicado por MaxZ (10 intervenciones) el 03/02/2003 16:45:46
Hay alguna forma de que una función te devuelva una serie de valores o variables, no una sola, ¿es posible en Oracle? ¿como se puede hacer?¿o existe alguna otra forma?

Gracias por anticipado
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:Función que devuelva mas de una variables

Publicado por Byron (300 intervenciones) el 03/02/2003 20:29:14
Saludos...

Puedes hacer uso de los procedimientos, los parametros que tiene un procedimiento son de tipos IN, OUT o INOUT, es decir, puedes especificar varios parametros de entrada IN (por defecto), de salida OUT y de entrada/salida INOUT. En tu caso usarias los parametros de entrada IN que desees y los OUT seran los valores que te arrojara el procedimiento.

Ej.
--------------------------------------------
Create procedure empleado(ParCodigo number, ParNombre OUT varchar2, ParApellido OUT varchar2, ParDireccion OUT varchar2) is
begin
select firstname, lastname, address into ParNombre, ParApellido, ParDireccion from emp where cod = ParCodigo;
end;
---------------------------------------------------

y si lo quieres llamar desde una forma, lo ejecutarias de la siguiente manera:

Antes:
:codigo = 1
:nombre = Null
:apellido = Null
:direccion = Null

Ejecucion:
empleado(:codigo,:nombre,:apellido,:direccion);

Despues:
:codigo = 1
:nombre = 'MARK'
:apellido = 'SMITH'
:direccion = 'CALIFORNIA EE.UU.'

Espero te sirva
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:Función que devuelva mas de una variables

Publicado por MaxZ (10 intervenciones) el 03/02/2003 21:11:13
Muchas gracias y ¿como ejecutaria el sp a traves de un query?, osea algo asi como "select sp1(1,5) from dual;
o desde una sentencia SQL, ¿como le pongo los parametro de entrada y como extraigo el parametro de salida al ejecutar el sp?

Nuevamente gracias
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:Función que devuelva mas de una variables

Publicado por Byron (300 intervenciones) el 04/02/2003 16:23:26
Si lo que deseas es utilizarlos desde una sentencia sql deberas incorporarlo dentro de un bloque begin - end, porque los procedimientos necesitan variables, las que deberas declarar en la seccion declare del bloque.

Ej.
declare
var_codigo varchar2(20);
begin
sp1(12,var_codigo); -- Donde 12 es parametro IN y la variable es OUT
select * from emp where codigo = var_codigo; -- Despues puedes hacer uso de esa variable en el select
end;

Si lo que necesitas es ejecutarlo desde el SQLPlus.
SQL> EXEC sp1(12);

En este caso no puedes extraer variables por lo que los parametros deberan ser todos IN. y si deseas tener salidas podrias incluir dentro del procedimiento o dentro del bloque salidas al plus usando la sentencia:

SQL>dbms_output.put_line(variable_a_mostrar);

previamente debes setear en el plus la variable de entorno serveroutput a ON:

SQL>set serveroutput on

Puedes hacer uso en sentencias select las funciones asi:

SQL>select * from emp where cod = funcion_retorna_codemp('SMITH');
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:Función que devuelva mas de una variables

Publicado por MaxZ (10 intervenciones) el 04/02/2003 19:14:21
Muchas gracias, con todo esto ya logre lo que quería

Saludos, desde Peru
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