2012-01-12 64 views
-2

在存儲過程中,我有一個IF條件來檢查orgID是否存在於設置標誌的查詢結果中。什麼是正確的語法?存儲過程中的IF條件

create procedure temp 
(@TEMpID char(6) 
) 
declare @orgID char(3),flag char(1) 
SET flag ='N' 

BEGIN 
set 
@OrgID =(selecte orgID from table1) 
IF @OrgID exists in (select distinct(OrgID) from table2) 
set flag = 'Y' 

END 

Begin 
select p1, p2, p3, flag 
from table3 

END 
+1

'從table1'選擇ORGID只會返回一個值?似乎不太可能。 「@ TEMpID」參數在哪裏使用? – 2012-01-12 16:00:49

回答

3

事情是這樣的:

IF exists (select 1 from table2 where [email protected]) 
    set flag = 'Y' 

注意:我覺得你有太多的begin/end塊。

你可以寫你的PROC爲:

create procedure temp 
( 
    @TEMpID char(6) 
) 
as 
BEGIN 
    --whole body here 
END 
1

你可以使用一個SELECT語句

SELECT 
    p1, 
    p2, 
    flag = CASE 
    WHEN EXISTS(SELECT table1.OrgId FROM table1 JOIN table2 ON table1.OrgId=table2.OrgId) THEN 'Y' 
    ELSE 'N' 
    END 
FROM table3