存储过程中的IF条件

时间:2012-01-12 15:56:16

标签: sql-server

在存储过程中,我有一个IF条件来检查查询结果中是否存在orgID来设置标志。什么是正确的语法??

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 

2 个答案:

答案 0 :(得分:3)

这样的事情:

IF exists ( select 1 from table2 where OrgID=@OrgID)
   set flag = 'Y'

注意:我认为你有太多begin/end块。

你可以把你的proc写成:

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

答案 1 :(得分:1)

您可以使用单个选择语句

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