带有WHERE子句条件的SQL游标

时间:2011-11-07 11:22:23

标签: sql oracle

我有一个光标,我正在传递一个标志并在该光标内,我正在使用以下条件

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 个答案:

答案 0 :(得分:5)

您可以将OR用于此

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

答案 1 :(得分: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