Galera, Boa Tarde!
Venho acompanhando o Forum já ha algum tempo, mas esse é meu primeiro post e gostaria muito da ajuda de vocês.
Tenho uma Trigger que chama uma Procedure que funciona já há algum tempo em um cliente, agora a Trigger não está funcionando, dá o erro da figura 1.
O estranho é que a procedure pelo banco funciona normalmente, mas quando acionado via Trigger dá o erro mostrado. Pode ser configuração do BDE? Recentemente o cliente colocou o Windows 64Bits, pode ter alguma influência?
Tendo em mãos que a procedure executa pelo banco normalmente, tomei a iniciativa de coloca-la para rodar via Relatório no RM, daí ocorreu o erro da figura 2.
o Banco é SQL Server 2005
Segue abaixo a Trigger:
ALTER TRIGGER [dbo].[ZTRG_TITMCNT_PROCESSO] ON [dbo].[TITMCNT]
FOR UPDATE, INSERT
AS
IF UPDATE(CODTB2FLX)
BEGIN
DECLARE @CODTB2FLX VARCHAR(20)
SELECT @CODTB2FLX=CODTB2FLX FROM INSERTED
-- DATA: 11/09/2007
-- ESSA TRIGGER TEM COMO OBJETIVO ALIMENTAR A TABELA TEMPOSRARIA PARA SAIR DO BEGIN TRAN ** OLHAR A TRIGGER NA TABELA ZTITMCNT
IF LEN(@CODTB2FLX)>1
BEGIN
INSERT INTO ZTITMCNT SELECT CODCOLIGADA, IDCNT, NSEQITMCNT, CODTB2FLX, CONVERT(DATETIME,CONVERT(VARCHAR,YEAR(GETDATE()))+'-'+CONVERT(VARCHAR,MONTH(GETDATE()))+'-'+CONVERT(VARCHAR,DAY(GETDATE()))), 0 FROM INSERTED
END
--EXECUTA A PROCEDURE PARA ATUALIZAR AS INFORMAÇÕES ** CRIADA EM 11-08-2008
EXEC ZSPC_ATUALIZA_PROC
END
GO
Segue abaixo a Procedure:
USE [CORPORERM]
GO
/****** Object: StoredProcedure [dbo].[ZSPC_ATUALIZA_PROC] Script Date: 04/14/2009 20:50:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[ZSPC_ATUALIZA_PROC]
AS
BEGIN
-- DATA: 11/09/2007
-- ESSA PROCEDURE TEM COMO OBJETIVO COLOCAR A VARA, ACAO, NP, COM BASE NA TRIGGER DA TITMCNT
DECLARE @CODCOLIGADA INT
DECLARE @IDCNT INT
DECLARE @NSEQITMCNT INT
DECLARE @CODTB2FLX VARCHAR(10)
DECLARE @VARA VARCHAR(10) --CODBT1FAT = PROPRO.PROVARSEQ = VARA
DECLARE @ACAO VARCHAR(10) --CODTB2FAT = PROPRO.PROACOSEQ = ACAO
DECLARE @NPDESC VARCHAR(90) --CODTB4FLX = PROPRO.PRONPCLIE = NP (DESCRICAO)
DECLARE @NP VARCHAR(10)
DECLARE @OUTRAPARTE VARCHAR(10) --CODTB5FLX = PROOUT.OUTCLISEQ = OUTRAPARTE (DBA.PROOUT.OUTPROSEQ=DBA.PROPRO.PROSEQUEN)
declare cursor_tab cursor for
SELECT CODCOLIGADA, IDCNT, NSEQITMCNT, CODTB2FLX FROM ZTITMCNT WHERE FLAG=0 ORDER BY SEQ
open cursor_tab
fetch next from cursor_tab into @CODCOLIGADA, @IDCNT, @NSEQITMCNT, @CODTB2FLX
while (@@fetch_status <> -1)
begin
SELECT @NP='0'
SELECT @VARA=REPLICATE('0',6-LEN(PROVARSEQ))+CONVERT(VARCHAR,PROVARSEQ), @ACAO=REPLICATE('0',6-LEN(PROACOSEQ))+CONVERT(VARCHAR,PROACOSEQ), @NPDESC=PRONPCLIE FROM LFM.DBA.PROPRO WHERE PROSEQUEN=@CODTB2FLX
SELECT @NP=CODTB4FLX FROM FTB4 WHERE RTRIM(DESCRICAO)=RTRIM(@NPDESC) AND CODCOLIGADA=@CODCOLIGADA
SELECT @OUTRAPARTE=OUTCLISEQ FROM LFM.DBA.PROPRO PROPRO, LFM.DBA.PROOUT PROOUT WHERE PROOUT.OUTPROSEQ=PROPRO.PROSEQUEN AND PROPRO.PROSEQUEN=@CODTB2FLX AND PROOUT.OUTPOSICA=(SELECT MIN(OUTPOSICA) FROM LFM.DBA.PROOUT WHERE OUTPROSEQ=@CODTB2FLX)
IF LEN(@NP)>1
BEGIN
UPDATE TITMCNT SET CODTB1FAT=@VARA, CODTB2FAT=@ACAO, CODTB4FLX=@NP, CODTB5FLX=@OUTRAPARTE WHERE CODCOLIGADA=@CODCOLIGADA AND IDCNT=@IDCNT AND NSEQITMCNT=@NSEQITMCNT
UPDATE TITMMOV SET CODTB1FAT=@VARA, CODTB2FAT=@ACAO, CODTB4FLX=@NP, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT
UPDATE TMOV SET CODTB1FAT=@VARA, CODTB2FAT=@ACAO, CODTB4FLX=@NP, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV, TMOV
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT AND
TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND TITMMOV.IDMOV=TMOV.IDMOV
UPDATE FLAN SET CODTB4FLX=@NP, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV, TMOV, FLAN
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT AND
TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND TITMMOV.IDMOV=TMOV.IDMOV AND
TMOV.CODCOLIGADA=FLAN.CODCOLIGADA AND TMOV.IDMOV=FLAN.IDMOV
UPDATE FXCX SET CODTB4FLX=@NP, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV, TMOV, FLAN, FXCX
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT AND
TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND TITMMOV.IDMOV=TMOV.IDMOV AND
TMOV.CODCOLIGADA=FLAN.CODCOLIGADA AND TMOV.IDMOV=FLAN.IDMOV AND
FLAN.CODCOLIGADA=FXCX.CODCOLIGADA AND FLAN.IDXCX=FXCX.IDXCX
END
IF LEN(@NP)<=1
BEGIN
UPDATE TITMCNT SET CODTB1FAT=@VARA, CODTB2FAT=@ACAO, CODTB4FLX=NULL, CODTB5FLX=@OUTRAPARTE WHERE CODCOLIGADA=@CODCOLIGADA AND IDCNT=@IDCNT AND NSEQITMCNT=@NSEQITMCNT
UPDATE TITMMOV SET CODTB1FAT=@VARA, CODTB2FAT=@ACAO, CODTB4FLX=NULL, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT
UPDATE TMOV SET CODTB1FAT=@VARA, CODTB2FAT=@ACAO, CODTB4FLX=NULL, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV, TMOV
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT AND
TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND TITMMOV.IDMOV=TMOV.IDMOV
UPDATE FLAN SET CODTB4FLX=NULL, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV, TMOV, FLAN
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT AND
TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND TITMMOV.IDMOV=TMOV.IDMOV AND
TMOV.CODCOLIGADA=FLAN.CODCOLIGADA AND TMOV.IDMOV=FLAN.IDMOV
UPDATE FXCX SET CODTB4FLX=NULL, CODTB5FLX=@OUTRAPARTE, CODTB2FLX=@CODTB2FLX
FROM TITMCNT, TITMMOV, TMOV, FLAN, FXCX
WHERE TITMCNT.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TITMCNT.IDCNT=TITMMOV.IDCNT AND TITMCNT.NSEQITMCNT=TITMMOV.NSEQITMCNT AND TITMCNT.IDCNT=@IDCNT AND TITMCNT.NSEQITMCNT=@NSEQITMCNT AND
TITMMOV.CODCOLIGADA=TMOV.CODCOLIGADA AND TITMMOV.IDMOV=TMOV.IDMOV AND
TMOV.CODCOLIGADA=FLAN.CODCOLIGADA AND TMOV.IDMOV=FLAN.IDMOV AND
FLAN.CODCOLIGADA=FXCX.CODCOLIGADA AND FLAN.IDXCX=FXCX.IDXCX
END
SELECT @VARA=''
SELECT @ACAO=''
SELECT @NPDESC=''
SELECT @NP='0'
UPDATE ZTITMCNT SET FLAG=1 WHERE CODCOLIGADA=@CODCOLIGADA AND IDCNT=@IDCNT AND NSEQITMCNT=@NSEQITMCNT AND CODTB2FLX=@CODTB2FLX
fetch next from cursor_tab into @CODCOLIGADA, @IDCNT, @NSEQITMCNT, @CODTB2FLX
end
CLOSE cursor_TAB
deallocate cursor_TAB
END
Ajudem PLEASE!!!!