对于Microsoft SQL Server,我想按顺序执行存储过程,并在以后的过程仍在执行时使用通知并使用结果。例如,下面的代码仅在完成所有3个过程之后才打印3个句子“ Update_TableX_done”。
'Update_TableX'是存储过程,可以将一些更新的数据插入表中。
我可以设置为在每个EXEC语句完成之后执行打印吗?
在更新Table2时可以使用Table1的结果吗?
如果Update_Table2的过程失败,我可以保留Update_Table1的结果吗?
或者,是唯一在Update_Table1完成后才手动启动Update_Table2的解决方案吗?
EXEC [dbo].[Update_Table1]
PRINT 'Update_Table1_done'
EXEC [dbo].[Update_Table2]
PRINT 'Update_Table2_done'
EXEC [dbo].[Update_Table3]
PRINT 'Update_Table3_done'
答案 0 :(得分:1)
PRINT命令在缓冲区已满时刷新消息。要触发立即刷新消息到消息流,请使用带有WITH NOWAIT选项的RAISEERROR。
raiserror('Test 1', 10, 1) with nowait;
waitfor delay '00:00:05';
raiserror('Test 2', 10, 1) with nowait;