繁体   English   中英

SQL - 如何有条件地调用查询的一部分

[英]SQL - How to call a part of query conditionally

我需要编写这样的 SQL 查询:

做第一步

做第2步

做第3步——这一步做了很多事情:定义变量,使用第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 步应该是整个查询的一部分

当我尝试创建 @step3Query NVARCHAR(MAX), SET @step3Query = '...' 然后通过调用“EXEC sp_executesql @step3Query”在适当的地方调用这个查询。 但是我遇到了很多错误,我不确定这是执行此类任务的正确方法。 任何建议将不胜感激。

这是一种可行的方法(取决于您的具体情况)。 主要是它很容易,也很容易阅读。

您可以将 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

请注意,查询需要按正确的顺序排列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM