【问题标题】:How to catch the error from a stored procedure? in sql如何从存储过程中捕获错误?在 sql
【发布时间】:2012-10-03 21:57:20
【问题描述】:

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

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”附近的语法不正确。

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

那我该如何捕捉错误呢?

【问题讨论】:

    标签: sql sql-server variables parameters try-catch


    【解决方案1】:

    第一种解决方案:

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

    Here 是 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
    

    【讨论】:

    • 嗯,我无法更新 proc 或删除并再次创建它,因为我这是一个为其他进程工作的商店,所以我们无法对其进行更改
    • 为了老板的指示,我无法对商店过程进行更改
    猜你喜欢
    • 2011-01-02
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多