none
Não consigo gravar na tabela de log de erro RRS feed

  • Pergunta

  • Boa Tarde

    Tenho as seguintes procedures (é um exemplo)
    PRINCIPAL e TESTE

    Executo o seguinte comando
    EXEC PRINCIPAL

    Gostaria que a @MSG fosse gravada na TABLOG mas ela grava sem nada, ou como branco = ' '
    Gostaria de entender porque a @MSG não é populada com o SET?
    Como faço para conseguir gravar a @MSG na tabela TABLOG?

    Segue a estrutrua das tabelas e o script da procedure.


    CREATE TABLE TABLOG (MENSAGEM VARCHAR(100));
    CREATE TABLE CLIENTE (CODIGO INT, NOME VARCHAR(10));
    INSERT INTO CLIENTE VALUES (1,'CODIGO 1');

    --==========================
    CREATE PROC PRINCIPAL AS
    EXEC TESTE
    GO
    --==========================
    CREATE PROC TESTE AS

    set nocount on
    SET XACT_ABORT ON

    DECLARE @CODIGO INT = 0
    DECLARE @NOME VARCHAR(10) = ' '
    DECLARE @MSG VARCHAR(100) = ' '

    DECLARE @ErrorVar INT;  
    DECLARE @RowCountVar INT;  

    DECLARE
      @rc int = 1, @retries tinyint = 0, @maxretries tinyint = 10,
      @ErrorMessage nvarchar(4000), @ErrorSeverity int, @ErrorState int;

    BEGIN TRY  
    CREATE TABLE #CLIENTE 
    (CODIGO INT, NOME INT)

    --COMANDO 1
    SELECT @CODIGO = CODIGO, @NOME = NOME FROM CLIENTE --WHERE NOME = 'ANDRE'
    SELECT @rc = @@ROWCOUNT;
    IF @rc = 0 
    begin
    SET @MSG = 'NOME NAO ENCONTRADO'
    INSERT INTO TABLOG (MENSAGEM) VALUES (@MSG)
    RETURN
    end

    --COMANDO 2
    BEGIN
    SET @CODIGO = 'ABC'
    SET @MSG = 'ERRO NA INSERCAO #CLIENTE'
    print @MSG
    INSERT INTO #CLIENTE
    VALUES (@CODIGO, @NOME) 
    END
    END TRY

    BEGIN CATCH  
    SELECT @ErrorMessage = ERROR_MESSAGE(),
      @ErrorSeverity = ERROR_SEVERITY(),
      @ErrorState = ERROR_STATE();
    INSERT INTO TABLOG (MENSAGEM) VALUES (@MSG)

    --RAISERROR (@ErrorMessage,@ErrorSeverity,@ErrorState)

    END CATCH
    GO
    segunda-feira, 15 de maio de 2017 19:45

Respostas

Todas as Respostas

  • Deleted
    terça-feira, 16 de maio de 2017 13:46
  • Jose.

    Não é que está errado 'ABC'! Estou forçando o ERRO para validar!

    terça-feira, 16 de maio de 2017 14:32
  • Deleted
    terça-feira, 16 de maio de 2017 16:55
  • Bom dia,

    Por falta de retorno esta thread esta encerrada !

    Por gentileza, caso necessário abra uma nova thread.

    Atenciosamente,


    Guilherme Macedo S

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 22 de maio de 2017 12:50