Hola. No estoy muy versado en procedimientos sql, pero ¿has probado a definir el mismo cursor de dos formas diferentes?:

 IF @TIPO = 'A' THEN DECLARE @CONSULTA1 CURSOR FOR
 SELECT a.PLACVE as A1, b.planom AS A2, COCFEI AS A3, FIDIMP AS A4
 FROM adamal.tfide a inner join adamal.tplan b on a.placve =
 b.placve WHERE COCFEI between @FECHAINICIAL and @FECHAFINAL and a.placve in
 (select placve from adamal.tplan where platip in ('@TIPO')) ORDER
 BY 1 ;

 ELSE 
 DECLARE @CONSULTA1 CURSOR FOR
 SELECT a.PLACVE as A1, b.planom AS A2, COCFEI AS A3, FIDIMP AS A4
 FROM adamal.tfide a inner join adamal.tplan b on a.placve =
 b.placve WHERE COCFEI between @FECHAINICIAL and @FECHAFINAL ORDER BY 1
 ;

 END IF;

Saludos.

Fernando Pérez 

Cerámica Saloni. Dpto. Organización



Juan Gutierrez Ruiz escribió:


 buenos dias Foro
 tengo un problema con un procedimiento almacenado, resulta que estoy declarando 2 cursores
 tengo que abrir uno u otro dependiendo del parametro que le pase, si le paso el parametro @tipo como 'A' me funciona correctamente, pero si le pongo otra letra deberia de abrieme al cursor 1 pero no lo habre, tenfre algun error en el codigo , alguna sugerencia, me faltara un commit ??? o el atomic ???
 (apenas me estoy metiendo en el mundo de los procedimientos almacenados)
 gracias de ante mano
 __________________________________________________________________________________________

 
 CREATE PROCEDURE ADAMAL.FICHAS_DEPOSITOS (IN @FECHAINICIAL NUMERIC(8,0),
 IN @FECHAFINAL NUMERIC(8,0),
 IN @TIPO VARCHAR(1))
 RESULT SETS 1
 LANGUAGE SQL
 SPECIFIC ADAMAL.FICHAS_DEPOSITOS
 ------------------------------------------------------------------------
 -- SQL Procedimiento almacenado
 ------------------------------------------------------------------------
 P1: BEGIN
 -- Declarar cursor
 DECLARE @CONSULTA1 CURSOR FOR
 SELECT a.PLACVE as A1, b.planom AS A2, COCFEI AS A3, FIDIMP AS A4
 FROM adamal.tfide a inner join adamal.tplan b on a.placve =
 b.placve WHERE COCFEI between @FECHAINICIAL and @FECHAFINAL and a.placve in
 (select placve from adamal.tplan where platip in ('@TIPO')) ORDER
 BY 1 ;
 DECLARE @CONSULTA2 CURSOR FOR
 SELECT a.PLACVE as A1, b.planom AS A2, COCFEI AS A3, FIDIMP AS A4
 FROM adamal.tfide a inner join adamal.tplan b on a.placve =
 b.placve WHERE COCFEI between @FECHAINICIAL and @FECHAFINAL ORDER BY 1
 ;

 IF @TIPO = 'A' THEN
 OPEN @CONSULTA2
 ;
 ELSE
 OPEN @CONSULTA1;
 END IF;
 END P1

 __________________________________________________________________ 		 	   		  
_________________________________________________________________
¿Te crees fan de Messenger? Compruébalo
www.vivirmessenger.com
____________________________________________________
© Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es
----------------------------------------------------
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

  
____________________________________________________
© Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es
----------------------------------------------------
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
  • [no subject] Juan Gutierrez Ruiz
    • Re: Diego Denis
    • Re: STORE PROCEDURE 2 CURSORES Fernando Pérez

Responder a