如何将条件查询放在游标中?

时间:2019-03-27 07:07:51

标签: sql oracle plsql

我有一个游标,它包含一个查询以根据某些问题逐个计算计数。我必须放置一些标志以执行查询 假设-如果User_flag为'Y',我想基于列进行计算 其他 我需要整个表计数以及几列,而无需按组。

我只是想将条件放在光标内。

我已经编写了查询来计算count,但是我无法设置条件-

 CURSOR EMP_detail SELECT  NULL t_name,
           NULL dep_name,
           NULL emp_name,
           COUNT(1) cnt  
      FROM emp_system emps,
     WHERE  
       AND emps.emp_id = 34167
       AND TRUNC(SYSDATE)  <=   TRUNC(valid_end)   
     GROUP BY NULL
   UNION
     SELECT NULL t_name,
           NULL dep_name,
           emp_name emp_name,
           COUNT(1) cnt   
      FROM emp_system emps,
     WHERE emps.emp_id = 34167
       AND TRUNC(SYSDATE)  <=   TRUNC(valid_end)   
     GROUP BY emp_name



CURSOR EMP_detail 
     IF User_flag ='Y' THEN
     SELECT  NULL t_name,
           NULL dep_name,
           NULL emp_name,
           COUNT(1) cnt  
      FROM emp_system emps,
     WHERE  
       AND emps.emp_id = 34167
       AND TRUNC(SYSDATE)  <=   TRUNC(valid_end)   
     GROUP BY NULL
     ELSE 
   UNION
     SELECT NULL t_name,
           NULL dep_name,
           emp_name emp_name,
           COUNT(1) cnt   
      FROM emp_system emps,
     WHERE emps.emp_id = 34167
       AND TRUNC(SYSDATE)  <=   TRUNC(valid_end)   
     GROUP BY emp_name

我需要执行上述功能。如何在游标本身中实现此功能。

1 个答案:

答案 0 :(得分:2)

既然您似乎已经在使用PLSQL,为什么不在那里解决呢?

if user_flag='Y' then
  open your_cursor for select .. (query for when flag=Y)
else
  open your_cursor for select ... (query for when flag !=Y)
end if;