Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2009, 05:09
Josgarcal
 
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!!!