Cal*_*era 8 t-sql sql-server transactions commit
如果我有一个存储过程使用不同的参数多次执行另一个存储过程,是否可以让这些调用中的每一个独立于其他调用?
换句话说,如果嵌套过程的前两次执行成功,但第三次执行失败,是否可以保留前两次执行的结果(而不是回滚)?
我在SQL Server 2000中定义了类似这样的存储过程:
CREATE PROCEDURE toplevel_proc ..
AS
BEGIN
...
while @row_count <= @max_rows
begin
select @parameter ... where rownum = @row_count
exec nested_proc @parameter
select @row_count = @row_count + 1
end
END
Run Code Online (Sandbox Code Playgroud)
但是,你可以使用SAVEPOINTs作为这个例子(太长时间在这里再现,抱歉)来自SO用户Remus Rusanu
编辑:AlexKuznetsov提到(他删除了他的答案),如果交易注定失败,这将不起作用.SET XACT_ABORT ON或某些触发错误可能会发生这种情况.
| 归档时间: |
|
| 查看次数: |
2566 次 |
| 最近记录: |