我有两个 TSQL EXEC 语句
EXECUTE (N'MyDynamicallyGeneratedStoredProcedure') -- return 0 on success
SELECT @errCode = @@ERROR ;
IF (@errCode = 0)
BEGIN
EXEC 'A Sql Statement using ##temptable created from first', @returnValue
END
如何使两个 EXEC 同步? ;现在,第二个 EXEC 不会等待第一个 EXECUTE 完成。我尝试发出 WaitFor Delay,它会等待,但第二个 EXEC 语句永远不会返回。
谢谢。
更新,以下是更多信息:
- 第一次执行会创建一个全局临时表并通过复杂的 SELECT 查询填充它。
- 第二个 EXEC 是一个 CLR 存储过程,它根据最近创建和填充的全局临时表中的变量生成动态 SP。
现在第二个 EXEC 提示找不到全局临时表。
更新2,发现问题(就是我!!)
GBN(和其他人)的答案是空白的。 EXEC 是同步的。问题?我对问题本身的理解..我已经提到过
- EXECUTE (N'MyDynamicallyGeneratedStoredProcedure') -- 成功时返回 0
应该是:
1(a) EXECUTE (N'CreateMyDynamicStoredProcedure') -- 成功时返回 0
1(b) EXECUTE (N'MyDynamicStoredProcedure') -- 成功时返回 0
我错过了 1(b) 实际上是在其他地方并且在步骤 (2) 之后执行的。
(我应该去谋生!!)
最佳答案
EXECUTE 是同步的。第二个在第一个之后运行。永远。
您是否有多个连接运行相同的代码?您正在使用一个对所有连接都可见的全局临时表,因此它可能看起来像异步执行...
关于sql - TSQL使EXECUTE语句同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741970/