【问题标题】:Dynamic SQL and RAISERROR动态 SQL 和 RAISERROR
【发布时间】:2017-06-29 14:54:13
【问题描述】:

我在 TRY CATCH 中运行了 5 个动态 SQL 插入,但是 CATCH 块不会让运行此代码的父存储过程知道它可能已失败。我需要在每个动态 SQL 之后添加一个RAISERROR 以标记是否有错误。

每个 dSQL 都以

结尾
EXEC sp_executesql @SQL, @param_definition, @param

我是在每个之后调用RAISERROR,还是只需要在CATCH 中调用一个?

谢谢

【问题讨论】:

    标签: sql sql-server raiserror


    【解决方案1】:

    只要动态查询不包含任何 TRY/CATCH,那么 CATCH 中的THROWing(或 SQL 2012 之前的 RAISERROR)就足够了。喜欢

    begin try
      . . .
      EXEC sp_executesql @SQL, @param_definition, @param
      . . .
      EXEC sp_executesql @SQL, @param_definition, @param
      . . .
      EXEC sp_executesql @SQL, @param_definition, @param
    end try
    begin catch 
      throw
    end catch
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2010-11-17
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多