0

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

每个 dSQL 以

EXEC sp_executesql @SQL, @param_definition, @param

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

谢谢

4

1 回答 1

0

只要动态查询不包含任何 TRY/CATCH,那么 CATCH 中的THROW ing(或 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
于 2017-06-29T15:12:00.480 回答