Usuário com melhor resposta
Não consigo gravar na tabela de log de erro

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
Respostas
-
Deleted
- Marcado como Resposta Guilherme Macedo S segunda-feira, 22 de maio de 2017 12:50
Todas as Respostas
-
-
-
Deleted
- Marcado como Resposta Guilherme Macedo S segunda-feira, 22 de maio de 2017 12:50
-
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.