小编典典

TSQL使EXECUTE语句同步

sql

我有两个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语句永不恢复。

谢谢。

更新,这里是更多信息:

  1. 首先执行将创建一个全局临时表,并从一个复杂的SELECT查询中填充它。
  2. 第二个EXEC是CLR存储过程,它基于最近创建并填充的Global Temp表中的变量来生成动态SP。

现在,第二个EXEC抱怨找不到Global Temp表。

更新2,发现了问题(还有我!!)

GBN(及其他)在答案上空白。EXEC是同步的。问题?我对问题本身的理解..我已经提到

  1. 执行(N’MyDynamicallyGeneratedStoredProcedure’)-成功返回0

应该是:

1(a)执行(N’CreateMyDynamicStoredProcedure’)-成功返回0

1(b) 执行(N’MyDynamicStoredProcedure’)-成功返回0

我错过了1(b)实际上在其他地方并且在步骤(2)之后执行的情况。

(我应该去生活!)


阅读 258

收藏
2021-04-14

共1个答案

小编典典

EXECUTE是同步的。第二个比赛在第一个比赛之后进行。总是。

您是否有多个连接运行相同的代码?您正在使用对所有连接可见的全局临时表,因此它看起来像异步执行…

2021-04-14