2011-11-07 94 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