检查存储过程中的条件(sql server 2005)

时间:2010-11-16 06:36:41

标签: sql-server-2005

我有一个SP,我需要检查是否有条件

ALTER   PROCEDURE [dbo].[spCheck]  
 @strEmpname  VARCHAR(50),  
 @intReturn  INT OUTPUT,
 @intWorkdID  INT,
 @intEmpID INT  
AS  

BEGIN  
IF(@intWorkdID is not null and @intWorkdID != '')
    BEGIN 
      IF EXISTS ( SELECT *   
          FROM Employee   
         WHERE [Empname] = @strEmpname   
         AND WorkID = @intWorkdID 
           )  
       SELECT @intReturn = '1'  
    END 
ELSE    
IF(@intEmpID is not null and @intEmpID != '')
   BEGIN
     IF EXISTS ( SELECT * 
          FROM Employee   
         WHERE [Empname] = @strEmpname    
         AND PeopleID = @intEmpID 
           )  
       SELECT @intReturn = '1'   
    END
 ELSE IF(@intEmpID is not null and @intEmpID != '') 
 and(@intWorkdID is not null and @intWorkdID != '')
  BEGIN  
   SELECT @intReturn = '0'  
  END  

END  

这里基于WorkID,EmpID
应执行1个条件和2个条件

如果两个条件都失败,我需要执行第三个条件

任何人都可以告诉它的语法

感谢

王子

2 个答案:

答案 0 :(得分:4)

最好的方法是你可以使用

尝试以下内容:

SELECT @intReturn = 
     CASE
          WHEN @intWorkdID IS NULL THEN 1
          WHEN @intWorkdID<>'' THEN 1
          WHEN @intEmpID IS NULL THEN 1
          WHEN @intEmpID <>'' THEN 1
          ELSE 0
     END

Case... When

这个

答案 1 :(得分:2)

int不能等于''

我不确定您在逻辑中要求的是什么,但当if不匹配时,它会运行else部分。然后,根据您的脚本,您可以在此之后设置if -> else