1

我有一个可以返回错误的存储过程这个例子它总是会返回错误

create proc regresaerror
as
begin
 raiserror 51001 'Error al borrar los precios especiales' 
end

declare @error varchar(max)
set @error=''
begin try
set @error=exec regresaerror
end try
begin catch
end catch

我试过了(因为我需要在临时表中插入这个错误)但是那个块代码得到了这个错误

消息 156,级别 15,状态 1,第 4 行
关键字“exec”附近的语法不正确。

无法更新存储过程以添加输出变量

那我怎么能捕捉到错误呢?

4

1 回答 1

1

第一种解决方案:

BEGIN TRY
    EXECUTE regresaerror
END TRY
BEGIN CATCH
    SELECT 
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;

这里是 MSDN 的链接。

第二种解决方案:

create proc regresaerror 
(
  errmsg varchar(max) out
)
as
begin
 set errmsg =  'Error al borrar los precios especiales' 
 return 51001 -- if error
end 

declare @error varchar(max)
declare @numerror int
set @error=''   
exec @numerror = regresaerror @error out
于 2012-10-03T22:00:25.223 回答