Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Consulta sobre un procedure

Estas en el tema de Consulta sobre un procedure en el foro de Oracle en Foros del Web. Hola a todos, Tengo el siguiente procedimiento (os pongo solo lo importante): CREATE OR REPLACE PROCEDURE consultaEmpCat(ecif_empresa CAT_EMP.CIF_EMPRESA%TYPE, RSP OUT NOCOPY VARCHAR2) AS CURSOR cCur ...
  #1 (permalink)  
Antiguo 08/05/2009, 05:09
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Consulta sobre un procedure

Hola a todos,

Tengo el siguiente procedimiento (os pongo solo lo importante):

CREATE OR REPLACE
PROCEDURE consultaEmpCat(ecif_empresa CAT_EMP.CIF_EMPRESA%TYPE, RSP OUT NOCOPY VARCHAR2)
AS
CURSOR cCur IS select * from vCatEmp;
CURSOR cCur2 IS select * from vCatEmp WHERE CIF_EMPRESA=ecif_empresa;
...
Begin
...
IF (ecif_empresa IS NULL) THEN

--Recorro el cursor cCur

ELSE

--Recorro el cursor cCur2


END IF;
...


Como veis abro dos cursores y en función de si el parámetro ecif_empresa tiene valor recorro uno o el otro.

Esto funciona, pero lo hago así porque no se como parametrizar el where de la consulta del cursor y así utilizar sólo uno, que sería lo más correcto.

Es decir, ¿como puedo hacer para que la consulta que carga el cursor tenga o no un where, en función del parámetro de entrada del procedimiento?

Si hago el condicional antes del begin, me da error al compilar.
Si cargo el cursor dentro del begin, me da error al compilar.

Alguna idea?

Gracias!!!
  #2 (permalink)  
Antiguo 08/05/2009, 08:18
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
Puntos: 85
Respuesta: Consulta sobre un procedure

Código:
CURSOR cCur IS 
  select * from vCatEmp 
     WHERE CIF_EMPRESA = NVL(ecif_empresa, CIF_EMPRESA);
Saludos
  #3 (permalink)  
Antiguo 08/05/2009, 11:18
 
Fecha de Ingreso: abril-2009
Mensajes: 10
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta sobre un procedure

Gracias, perfecto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:12.