动态SQL和RAISERROR

时间:2017-06-29 14:54:14

标签: sql sql-server raiserror

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

每个dSQL都以

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

我是否应在每次RAISERROR之后致电CATCH

由于

1 个答案:

答案 0 :(得分:0)

只要动态查询不包含任何TRY / CATCH,CATCH中的THROW(或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