2010-11-16 3 views
4

у меня есть SP, где мне нужно проверить, если условиепроверка, если условие в хранимой процедуре (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 

здесь основано на WorkID, EmpId
1 условие и 2 условие должно выполняться

если оба условия не в состоянии мне нужно для преобразования приложений третьего условия

может любой сказать синтаксис для него

го anks

принц

ответ

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

для этого

2

int не может равняться ''.

Я не уверен, что вы просите в своей логике, но когда if не соответствует, тогда он запускает часть else. Затем вы можете получить anpther if -> else после этого в соответствии с вашим скриптом.

Смежные вопросы