Как поставить условные запросы внутри курсора? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть курсор, который содержит один запрос для расчета количества на основе некоторой группы по проблеме.Я должен поставить флаг для выполнения запроса. Предположим, если IF__flag равен 'Y', я хочу рассчитать количество на основе групп по столбцам, в противном случае мне нужно полное количество таблиц вместе с несколькими столбцами, без группы по необходимости.

Просто я хочу поместить условие внутри курсора.

Я написал запрос для вычисления количества, но я не могу поставить условие -

 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 Ответ

2 голосов
/ 27 марта 2019

Поскольку вы, похоже, уже используете 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...