我需要编写如下SQL查询:
做step1
做step2
做step3 -这个步骤做了很多事情:定义变量,使用步骤1中定义的变量,将大量数据查询到临时表中.
if(cond1)
if(cond2)
Begin
do step 4
call step 3 here
End
else
Begin
do step 5
End
else
Begin
call step 3 here
End
如何使步骤3成为可重用的查询,以避免不必要地调用步骤3?注意,步骤3应该是整个查询的一部分。
当我尝试创建@ SET 3Query NVARCHAR(MAX)时,设置@SET 3Query=‘.’然后在适当的位置调用此查询,方法是"EXEC sp_executesql @ Then 3Query“。但是我犯了很多错误,我不确定这样做是正确的。如有任何建议,将不胜感激。
发布于 2020-10-06 21:12:17
这里有一个可以工作的方法(取决于您的确切情况)。最重要的是,它很简单,也很容易阅读。
您可以使用3个变量作为标志,例如@Query3_Flag、@Query4_flag、@Query5_flag。
你的有条件支票只是设置了这些标志,例如,
IF (condition1)
BEGIN
SET @Query4_Flag = 1;
SET @Query3_flag = 1;
SET @Query5_flag = 0;
END
在查询3、4和5之前,让IF语句检查标志,如果标记设置为1,则只运行查询。
IF @Query3_Flag = 1
BEGIN
(run Query 3)
END
请注意,查询需要以正确的顺序进行。
https://stackoverflow.com/questions/64237512
复制相似问题