Error con trigger en SQL2005

27/07/2006 - 05:59 por Rodrigo Bedoya | Informe spam
Saludos a todos los colaboradores de este foro

Tengo el siguiente problema al generar un cursor con un trigger que funciona
bien en sql2000 pero al probar el SQL2005 genera error.. anexo trigger

set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO


ALTER TRIGGER [dbo].[grabar] ON [dbo].[MOVD2006]
FOR INSERT
AS

DECLARE @DOCUMENTO CHAR(2),
@NUMERO_CPB CHAR(8),
@LcSql VARCHAR(200),
@ano CHAR(4)

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="DECLARE cursorcabecera CURSOR SCROLL FOR SELECT OPER_CREA FROM
MOVG"+@ano+
" WHERE DOCUMENTO='"+@DOCUMENTO+"' AND NUMERO_CPB='"+@NUMERO_CPB+"'"

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
Se requiere algun parametro especial en la instruccion EXECUTE

EXECUTE (@LcSql)
print @@error Devuelve 0
print @@FETCH_STATUS Devuelve 0

OPEN cursorcabecera No se crea el cursor

/* Se Genera el siguiente error
Msg 16958, Level 16, State 3, Procedure grabar, Line 30
No se pudo completar la operación de cursor porque las opciones establecidas
cambiaron desde que se declaró el cursor.
*/

- Continua el trigger

RETURN
- FIN DEL TRIGGER


Cualquier inquietud muchisimas gracias
RODRIGO
BOGOTA-COLOMBIA
TEL 3103495468
 

Leer las respuestas

#1 Miguel Egea
28/07/2006 - 01:20 | Informe spam
prueba a cambiar el execute por sp_executesql
"Rodrigo Bedoya" wrote in message
news:
Saludos a todos los colaboradores de este foro

Tengo el siguiente problema al generar un cursor con un trigger que
funciona bien en sql2000 pero al probar el SQL2005 genera error.. anexo
trigger

set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO


ALTER TRIGGER [dbo].[grabar] ON [dbo].[MOVD2006]
FOR INSERT
AS

DECLARE @DOCUMENTO CHAR(2),
@NUMERO_CPB CHAR(8),
@LcSql VARCHAR(200),
@ano CHAR(4)

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="DECLARE cursorcabecera CURSOR SCROLL FOR SELECT OPER_CREA FROM
MOVG"+@ano+
" WHERE DOCUMENTO='"+@DOCUMENTO+"' AND NUMERO_CPB='"+@NUMERO_CPB+"'"

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
Se requiere algun parametro especial en la instruccion EXECUTE

EXECUTE (@LcSql)
print @@error Devuelve 0
print @@FETCH_STATUS Devuelve 0

OPEN cursorcabecera No se crea el cursor

/* Se Genera el siguiente error
Msg 16958, Level 16, State 3, Procedure grabar, Line 30
No se pudo completar la operación de cursor porque las opciones
establecidas
cambiaron desde que se declaró el cursor.
*/

- Continua el trigger

RETURN
- FIN DEL TRIGGER


Cualquier inquietud muchisimas gracias
RODRIGO
BOGOTA-COLOMBIA
TEL 3103495468

Preguntas similares