【发布时间】:2016-11-09 10:36:04
【问题描述】:
我有两个程序。依次调用一个接一个。
第 1 步: App(Java) 将调用 Proc1
create procedure proc1
as
begin
stmt 1
stmt 2
stmt 3
stmt 4 -- select query (result)
end
第 2 步:我们的应用程序 (Java) 将捕获结果并操作数据,并将在另一个名为 result_table的表中更新
第 3 步: App(Java) 调用 Proc2
create procedure Proc2
as
begin
stmt 1
stmt 2
stmt 3
stmt 5 -- this step uses result_table
stmt 6
end
正如您在两个过程中看到的,前三个语句是相同的。所以我打算将这两个程序结合在一起,以避免代码重复。像
create procedure proc1
as
begin
stmt 1
stmt 2
stmt 3
stmt 4 -- select query (result)
--- App(Java) will capture the result and process it
--- wait until the app completes the changes then proceed to stmt 5
stmt 5
stmt 6
end
这里棘手的部分是等待应用程序完成过程并继续第 5 步。我们可以在过程中等待一些信号或类似的东西吗?有任何想法吗 ?
搜索了论坛没有得到任何正确的答案。
【问题讨论】:
-
我猜是使用 CLR 存储过程。利用 .NET 框架来等待该信号。当然取决于那个信号是什么......
-
不错的老式轮询是一种选择(在循环中调用
WAITFOR DELAY)。您还可以将消息放入服务代理队列中,然后将RECEIVE放入其中(顺便说一句,这是WAITFOR中唯一允许的其他内容)。 -
我们的应用代码使用
Java。不幸的是,这里没有可用的 .NET 或 C# 开发人员:/。我们可以在数据库中处理这个吗? -
我认为您的查询不需要使用 waitfor 选项
-
如果您唯一的问题是复制 代码(而不是执行代码),您可以将复制的代码发送到新的存储过程和
EXEC从其他地方。您可能需要解决共享数据的问题,但是有ways for that。
标签: sql sql-server stored-procedures sql-server-2012