проверка состояния в хранимой процедуре (sql server 2005) - PullRequest
4 голосов
/ 16 ноября 2010

У меня есть 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 ]

4 голосов
/ 16 ноября 2010

Лучший способ - использовать

Попробуйте что-нибудь, как показано ниже:

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

Случай ... Когда

для этого

2 голосов
/ 16 ноября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...