Error trigger SQL2005 express a quien preguntar

01/08/2006 - 05:07 por Rodrigo Bedoya | Informe spam
Hola a todos
Tengo un trigger que funcionaba bien en sql2000, pero ahora en sql2005
express no me crea un cursor.
Alguien me podria indicar como eleva esta pregunta directamente a microsoft
?

Adjunto trigger
Gracias
RODRIGO
ALTER TRIGGER [dbo].[grabar] ON [dbo].[MOVD2006]

FOR INSERT

AS

return

DECLARE @DOCUMENTO CHAR(2),

@NUMERO_CPB CHAR(8),

@LcSql nVARCHAR(200),

@ano CHAR(4),

@LcPar nVARCHAR(200),

@oper_crea char(10)


SELECT @DOCUMENTO= ins.documento,

@NUMERO_CPB= ins.numero_cpb,

@ano=convert(char(4),YEAR(MDE_FEHCPB)) FROM INSERTED INS;

Se declara dinamicamente por que el nombre de la tabla

se sabe solo con el ano MOVG"+@ano

SET @LcSql=N'DECLARE cabecera CURSOR SCROLL FOR SELECT OPER_CREA FROM
MOVG'+@ano+

' WHERE DOCUMENTO=@par1 AND NUMERO_CPB=@par2';

SET @LcPar=N'@par1 CHAR(2),@par2 CHAR(8)';

Al ejecutar la instruccion siguiente no se esta generando el cursor

Esto mismo en SQL 2000 funciona correctamente , pero en SQL 2005 genera
error

por que no se tiene el cursor

exec sp_executesql @LcSql,@LcPar,@Documento,@numero_cpb



** No se genero este cursor

OPEN cabecera;

FETCH NEXT FROM cabecera INTO @oper_crea

print @oper_crea

CLOSE cabecera;

DEALLOCATE cabecera;



/* Se Genera el siguiente error

Msg 16958, Level 16, State 3, Procedure grabar, Line 31

No se pudo completar la operación de cursor porque las opciones establecidas

cambiaron desde que se declaró el cursor.

*/

- Continua el trigger --

RETURN

Preguntas similare

Leer las respuestas

#1 Miguel Egea
01/08/2006 - 17:43 | Informe spam
Declara tu cursor como forward only y nos cuentas.

En cualquier caso y como abanderado de la brigada anticursores
(particularmente si se usan dentro de triggers) ¿que quieres hacer con eso?
si nos dás mas pistas igual te llevas el problema resuelto y más
eficientemente ¿nos posteas el script de creación de tu bbdd algunos datos
deejemplo de lo que quieres hacer?

saludos
Miguel Egea

"Rodrigo Bedoya" wrote in message
news:
Hola a todos
Tengo un trigger que funcionaba bien en sql2000, pero ahora en sql2005
express no me crea un cursor.
Alguien me podria indicar como eleva esta pregunta directamente a
microsoft ?

Adjunto trigger
Gracias
RODRIGO
ALTER TRIGGER [dbo].[grabar] ON [dbo].[MOVD2006]

FOR INSERT

AS

return

DECLARE @DOCUMENTO CHAR(2),

@NUMERO_CPB CHAR(8),

@LcSql nVARCHAR(200),

@ano CHAR(4),

@LcPar nVARCHAR(200),

@oper_crea char(10)


SELECT @DOCUMENTO= ins.documento,

@NUMERO_CPB= ins.numero_cpb,

@ano=convert(char(4),YEAR(MDE_FEHCPB)) FROM INSERTED INS;

Se declara dinamicamente por que el nombre de la tabla

se sabe solo con el ano MOVG"+@ano

SET @LcSql=N'DECLARE cabecera CURSOR SCROLL FOR SELECT OPER_CREA FROM
MOVG'+@ano+

' WHERE DOCUMENTO=@par1 AND NUMERO_CPB=@par2';

SET @LcPar=N'@par1 CHAR(2),@par2 CHAR(8)';

Al ejecutar la instruccion siguiente no se esta generando el cursor

Esto mismo en SQL 2000 funciona correctamente , pero en SQL 2005
genera error

por que no se tiene el cursor

exec sp_executesql @LcSql,@LcPar,@Documento,@numero_cpb



** No se genero este cursor

OPEN cabecera;

FETCH NEXT FROM cabecera INTO @oper_crea

print @oper_crea

CLOSE cabecera;

DEALLOCATE cabecera;



/* Se Genera el siguiente error

Msg 16958, Level 16, State 3, Procedure grabar, Line 31

No se pudo completar la operación de cursor porque las opciones
establecidas

cambiaron desde que se declaró el cursor.

*/

- Continua el trigger --

RETURN




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida