【发布时间】:2018-09-20 18:49:23
【问题描述】:
对于 Microsoft SQL 服务器,我想按顺序执行存储过程,并在过程的后续部分仍在执行时通知和使用结果。例如,下面的代码只有在所有 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'
【问题讨论】:
-
SQL 是运行批处理时的顺序语言;批处理中的每个语句依次运行,一个接一个。那里有 6 个语句,每个语句都将在前一个语句之后运行(自上而下);一个在另一个完成之前不会运行(这并不意味着成功)。是的,您可以使用
UPDATE的输出,但您所拥有的是EXEC语句,而不是UPDATE语句。但是,您没有在这里定义您想要实际执行的操作。退后一步,看看你的问题,看看你能不能用我们所掌握的模糊信息来回答它。你需要更清楚你在问什么。 -
根据您的建议,添加了一句以阐明它们是存储过程:“Update_TableX”是将一些更新的数据插入到表中的存储过程。
-
问题一:是的,问题 2 和 3:如果没有更多信息,您无法判断您要做什么
-
问题一:是的(可以分享一下你的SQL代码吗?或者系统设置?目前我的系统只有在整个查询完成后才会弹出3条打印语句。)
-
问题2和3:根据另一个用户定期更新的另一个表中的信息,在一个表中插入新行。
标签: sql sql-server