1
resposta

Mensagem cortada na Resposta

Boa tarde!

Não sei se foi proposital, porém a variável @Mensagem está ficando cortada ao final da execução da Procedure apresentada como resposta, devido a sua declaração ter sido feita como um VARCHAR(100), solucionei essa questão aumentando o tamanho da variável, conforme mostrado na vídeo aula.

ALTER PROCEDURE InclusaoVendedor03
@MATRICULA AS VARCHAR(5), @NOME AS VARCHAR(100), 
@PERCENTUAL AS FLOAT, @DATAADMISSAO AS DATE, 
@FERIAS AS BIT, @BAIRRO AS VARCHAR(50), 
@MENSAGEM VARCHAR(MAX) OUTPUT -- ANTES ESTAVA DECLARADA COMO UM VARCHAR(100)
AS
BEGIN
    BEGIN TRY
        INSERT INTO [TABELA DE VENDEDORES] 
            (MATRICULA, NOME, [PERCENTUAL COMISSÃO], 
                [DATA ADMISSÃO], [DE FERIAS], BAIRRO)
        VALUES (@MATRICULA, @NOME, @PERCENTUAL, @DATAADMISSAO, 
            @FERIAS, @BAIRRO)
    END TRY
BEGIN CATCH
    SET @MENSAGEM = 'Houve um erro número: ' + 
        CONVERT(VARCHAR(10), ERROR_NUMBER()) + ' - '
    SET @MENSAGEM = @MENSAGEM + 'Mensagem: ' + 
        ERROR_MESSAGE() + ' - '
    SET @MENSAGEM = @MENSAGEM + 'Grau de severidade do erro: ' + 
        CONVERT(VARCHAR(10), ERROR_SEVERITY()) + ' - '
    SET @MENSAGEM = @MENSAGEM + 'Estado do erro: ' + 
        CONVERT(VARCHAR(10), ERROR_STATE()) + ' - '
    SET @MENSAGEM = @MENSAGEM + 'Número da linha: ' + 
        CONVERT(VARCHAR(10), ERROR_LINE()) + ' - '
    SET @MENSAGEM = @MENSAGEM + 'Procedure: ' + ERROR_PROCEDURE()
END CATCH
END
1 resposta

Olá Victor, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

De fato o que ocasiona o problema de corte de mensagem foi o @Mensagem como VARCHAR(100).

A solução é aumentar o tamanho da variável para VARCHAR(MAX), assim a mensagem é armazenada integralmente.

Victor, caso surja alguma dúvida, fico à disposição.

Abraços e até mais!