我在 a 中运行了 5 个动态 SQL 插入,TRY CATCH
但是该CATCH
块不让运行此代码的父存储过程知道它可能已经失败。我需要RAISERROR
在每个动态 SQL 之后添加一个以标记是否有错误。
每个 dSQL 以
EXEC sp_executesql @SQL, @param_definition, @param
我是RAISERROR
在每个之后调用还是只需要一个CATCH
?
谢谢
我在 a 中运行了 5 个动态 SQL 插入,TRY CATCH
但是该CATCH
块不让运行此代码的父存储过程知道它可能已经失败。我需要RAISERROR
在每个动态 SQL 之后添加一个以标记是否有错误。
每个 dSQL 以
EXEC sp_executesql @SQL, @param_definition, @param
我是RAISERROR
在每个之后调用还是只需要一个CATCH
?
谢谢
只要动态查询不包含任何 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