Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在游标内放置条件查询?_Sql_Oracle_Plsql - Fatal编程技术网

Sql 如何在游标内放置条件查询?

Sql 如何在游标内放置条件查询?,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个游标,其中包含一个查询,用于根据某个分组问题计算计数。我必须设置一些标志来执行查询 假设-如果User_标志为“Y”,我希望根据group by列计算计数 其他的 我需要整个表计数和几个列,不需要分组 我只是想把条件放在游标内 我已经编写了计算计数的查询,但我无法设置条件- CURSOR EMP_detail SELECT NULL t_name, NULL dep_name, NULL emp_name, COUNT

我有一个游标,其中包含一个查询,用于根据某个分组问题计算计数。我必须设置一些标志来执行查询 假设-如果User_标志为“Y”,我希望根据group by列计算计数 其他的 我需要整个表计数和几个列,不需要分组

我只是想把条件放在游标内

我已经编写了计算计数的查询,但我无法设置条件-

 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
光标EMP\u detail选择空t\u name,
部门名称为空,
空emp_名称,
计数(1)cnt
从emp_系统emps,
哪里
emps.emp_id=34167

而TRUNC(SYSDATE)既然您似乎已经在使用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;

既然您似乎已经在使用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;