2012-01-12 62 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