2011-11-07 98 views
0

我有一個光標在那裏我傳遞一個標誌,並且光標裏面,我使用以下條件SQL遊標與條件在WHERE子句

cursor abc (c_flag) 
IS 
    select 1 
    from pqr p 
    where p.c1 = CASE c_flag ='Y' 
        THEN p.c1 
        ELSE IS NOT NULL 
       END 

現在的問題是,ELSE情況下,將不會爲工作我因爲它應該這樣寫p.c1 IS NOT NULL,而不是p.c1 = IS NOT NULL。

我覺得你得到了我想要做的,如果c_flag是肯定的,我會採取所有的記錄,如果沒有的話都挑不爲空的記錄。 我使用的Oracle RDBMS作爲。

回答

2
cursor abc (c_flag) 
IS 
    select 1 
    from pqr p 
    where 1 = CASE 
       when c_flag ='Y'  then 1 
       when p.c1 IS NOT NULL then 1 
       else 0 
       END 
5

您可以使用OR這個

SELECT 1 
FROM pqr p 
WHERE c_flag = 'Y' 
     OR p.c1 IS NOT NULL