2010-11-16 6 views
4

j'ai un SP où je dois vérifier si la conditionvérifier si la condition procédure stockée (SQL Server 2005)

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 

ici basé sur workid, EmpID
1 état et 2 conditions doivent exécuter

si les deux conditions ne parviennent que je dois excute la troisième condition

quelqu'un peut-il dire la syntaxe pour elle

e anks

prince

Répondre

4

La meilleure façon est que vous pouvez utiliser

Essayez quelque chose comme ci-dessous:

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

pour cette

2

Un int ne peut pas égaler ''.

Je ne suis pas sûr de ce que vous demandez dans votre logique, mais quand un if ne correspond pas alors il exécute la partie else. Vous pouvez ensuite avoir if -> else après cela selon votre script.

Questions connexes