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

'выберите orgID из table1' будет только возвращать одно значение? Кажется маловероятным. Где используется параметр '@ TEMpID'? –

ответ

3

Что-то вроде этого:

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

Примечание: Я думаю, что вы слишком много begin/end блоков.

Вы можете написать свой процедурный как:

create procedure temp 
( 
    @TEMpID char(6) 
) 
as 
BEGIN 
    --whole body here 
END 
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 
Смежные вопросы