3. Ocorre um erro durante a execução da procedure (forço uma exceção)
4. Salvo as informações relativas ao erro numa tabela própria, utilizando outra transação
5. Retorno para a aplicação
6. Dou ROLLBACK a partir da aplicação
O problema é que, quando executo ROLLBACK, as operações salvas na tabela própria são desfeitas... ou seja, o meu COMMIT na outra transação não é considerado...
Segue exemplo do que estou tentando fazer...
DECLARE @P_DT_PGTO datetime
DECLARE @P_COD_USUARIO int
SET @P_DT_PGTO = '20100515'
SET @P_COD_USUARIO = 152
BEGIN TRANSACTION TRAN_01
BEGIN TRY
EXECUTE [SIP].[SP_GERA_SIP_PGTO] @P_DT_PGTO, @P_COD_USUARIO
COMMIT TRANSACTION TRAN_01
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION TRAN_01
END CATCH
CREATE PROCEDURE [SIP].[SP_GERA_SIP_PGTO](
@P_DT_PGTO DATETIME,
@P_COD_USUARIO INT
)
AS
BEGIN
-- VALIDA PARÂMETROS
IF (@P_DT_PGTO IS NULL) OR (@P_COD_USUARIO IS NULL)
BEGIN
BEGIN TRANSACTION TRAN_02
INSERT INTO SIP.LOG_SIP('DATA DE PAGAMENTO OU USUÁRIO NÃO INFORMADO(S))
COMMIT TRANSACTION TRAN_02
RAISERROR('DATA DE PAGAMENTO OU USUÁRIO NÃO INFORMADO(S).', 16, 1)
END
END
Pergunta
Oysk
Oi, galera!
Estou com a seguinte situação:
1. Inicio uma transação através da aplicação
2. Essa aplicação chama uma procedure
3. Ocorre um erro durante a execução da procedure (forço uma exceção)
4. Salvo as informações relativas ao erro numa tabela própria, utilizando outra transação
5. Retorno para a aplicação
6. Dou ROLLBACK a partir da aplicação
O problema é que, quando executo ROLLBACK, as operações salvas na tabela própria são desfeitas... ou seja, o meu COMMIT na outra transação não é considerado...
Segue exemplo do que estou tentando fazer...
É possível fazer o que estou querendo?
[]'s
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.