Estou tentando fazer uma procedure, dentro dessa procedure serão executadas outras procedures e alguns inserts e updates.
Gostaria de executa-la por bloco, e a se o bloco a ser executado der algum erro, paro a execução e exibo uma mensagem do step que deu problema.
Criei essa como teste:
alter procedure Sp_TesteErro
-- Sp_TesteErro 'Rodrigo'
(
@nome varchar(100)
)
as
begin
begin transaction
declare @error int
declare @msg varchar(1000)
insert into tabela1 values('Rodrigo')
Set @error = @@error
if @error<>0
begin
set @msg = 'Erro passo 1'
goto errodetail
end
insert into tabela1 values('Romina')
Set @error = @@error
if @error<>0
begin
set @msg = 'Erro passo 2'
goto errodetail
end
errodetail:
if @error <> 0
begin
rollback transaction
select @msg
end
else
commit transaction
end
Quando executo, a segunda vez, a procedure exibe erro de PK, mostra a mensagem de "Erro no passo 1", mas também exibe o erro:
Server: Msg 2627, Level 14, State 1, Procedure Sp_TesteErro, Line 14
Violation of PRIMARY KEY constraint 'PK__tabela1__0DAF0CB0'. Cannot insert duplicate key in object 'tabela1'.
The statement has been terminated.
Como faço para que não seja exibida essa mensagem e sim somente a minha mensagem de "Erro no passo 1"?
Pergunta
rodrigotnoma
Boa noite,
Estou tentando fazer uma procedure, dentro dessa procedure serão executadas outras procedures e alguns inserts e updates.
Gostaria de executa-la por bloco, e a se o bloco a ser executado der algum erro, paro a execução e exibo uma mensagem do step que deu problema.
Criei essa como teste:
Quando executo, a segunda vez, a procedure exibe erro de PK, mostra a mensagem de "Erro no passo 1", mas também exibe o erro:
Server: Msg 2627, Level 14, State 1, Procedure Sp_TesteErro, Line 14
Violation of PRIMARY KEY constraint 'PK__tabela1__0DAF0CB0'. Cannot insert duplicate key in object 'tabela1'.
The statement has been terminated.
Como faço para que não seja exibida essa mensagem e sim somente a minha mensagem de "Erro no passo 1"?
Obrigado.
Link para o comentário
Compartilhar em outros sites
4 respostass 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.