Dynamic SQL and RAISERROR



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

每个 dSQL 以

EXEC sp_executesql @SQL, @param_definition, @param

我是在每个之后打电话给RAISERROR还是只需要一个CATCH

谢谢

只要动态查询不包含任何 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

最新更新