Oracle - Pasar como parametro campo en el Join (Where)

 
Vista:

Pasar como parametro campo en el Join (Where)

Publicado por Black Diamond (11 intervenciones) el 26/06/2003 21:47:38
Holas .. tengo dos funciones, las cuales tienen la misma logica, pero tienen una diferencia... un campo en el where... como se lo puedo pasar como parametro??

Ej:
Funcion 1

Select 'x'
from dual
where xx = 'J'

Funcion 2

Select 'X'
from dual
where yy = 'J'

El campo xx y el yy es el que quiero mandarcomo parametro... como se hace eso??? 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:Pasar como parametro campo en el Join (Where)

Publicado por Gilberto (119 intervenciones) el 27/06/2003 05:44:03
EJEMPLO:

FUNCTION MI_FUNCION (XX, YY) RETURN VARCHAR2 IS

BEGIN
DECLARE

VAR1 VARCHAR2(10);
VAR2 VARCHAR2(10);

BEGIN
SELECT 'X'
into var1
FROM DUAL
WHERE XX = 'J'
RETURN (VAR1)
END;

BEGIN
Select 'X'
into var1
from dual
where yy = 'J'
RETURN (VAR2)
END;
END;

Como haces para dar los parametros en la función? Si lo estas trabajando en una forma quedaria asi en algun disparador:
Le daras los parametros para ejecutar la funcion (LOS CAMPOS QUE QUIERES UTILIZAR DENTRO DE LA FUNCION) y a que campo le asignas el resultado

:block.campo1 := MI_FUNCION(:BLOCK.CAMPO2, :BLOCK.CAMPO3);

campo2 dentro de la funcion seria XX y campo3 seria YY.
Solo que para el ejemplo que pusiste tendrías que colocar dentro de la función las condiciones para que te devuelva solo un valor, ya que al darle RETURN si los dos select se cumplen, la función te devolvera el segundo RETURN por ser el ultimo en ejecutarse. Este es mas o menos el ejemplo de como se crea una funcion. Espero te sirva.
Salu2

gilh
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:Pasar como parametro campo en el Join (Where)

Publicado por Black Diamond (11 intervenciones) el 27/06/2003 15:30:01
y de que tipo seria xx e yy??? habia pensado en eso antes , los habia declarado como varchar2 pero no lo toma como campo....
me salio con una funcion que se llama NAME_ID (param), param es el nombre del campo declarado como varchar2, pero el procedimiento que estoy haciendo es ALMACENADO, no es un program unit.... por lo tanto no puedo ocupar NAME_ID...

eso.. Gracias de todas maneras
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:Pasar como parametro campo en el Join (Where)

Publicado por Gilberto (119 intervenciones) el 28/06/2003 23:27:36
El tipo de dato que maneja XX e YY es el tipo de dato que tenga el campo que envias dentro de la función, o sea los datos de los campos que en el ejemplo te di como CAMPO2 y CAMPO3 si estos campos son numer las variables internas de la función van a ser numer y asi con cualquier tipo de dato. El ejemplo de funcion que te di es funcional tambien en procedimientos almacenados, segun te entiendo ahora lo que tu quieres manejar en si no es el dato del campo sino las propiedades de el o sus especificaciones. Porque no mandas un ejemplo de en que tienes pensado usar tu función y asi talves entiendo que es lo que exactamente quieres hacer cuando hablas de campo. Pues cuando pediste el ejemplo te entendí de como tomar los datos del campo hacia dentro de la función. Y te repito siento que lo quieres es manejar el campo dentro de la función hacia afuera.
Espero tu ejemplo.

gilh
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