L oop условие возвращаемое значение в PL / SQL - PullRequest
0 голосов
/ 22 января 2020

Я создаю процедуру в pl. sql, и я хочу, чтобы возвращение было истинным и ложным с условием, если столбец end_date меньше сегодняшнего дня, и возвращает ложь, если тогда сегодня, тогда возвращает истину в каждой записи. Это мой код процедуры

    create or replace procedure GET_REGIS_LIMIT(V_CURSOR out SYS_REFCURSOR) is
PR_END_DATE DATE;
begin
  BEGIN
  FOR myDATE in(SELECT END_DATE INTO PR_END_DATE FROM REGISTER_LIMIT T WHERE T.STATUS='U') 
  LOOP
    PR_END_DATE:=myDATE.END_DATE;
    OPEN V_CURSOR FOR
    SELECT T.*, (SELECT CASE WHEN PR_END_DATE > SYSDATE THEN 'TRUE' ELSE 'FALSE' END  FROM DUAL END) RESULTS
    FROM REGISTER_LIMIT T WHERE T.STATUS='U';
  END LOOP;
EXCEPTION
   WHEN NO_DATA_FOUND THEN  -- catches all 'no data found' errors
      OPEN V_CURSOR FOR
    SELECT 'EMPTY' RESULTS FROM DUAL  ; 
     end;

end GET_REGIS_LIMIT;

enter image description here

Столбец, который я отмечаю, должен возвращать true , но все они возвращаются false или это зависит от последней строки

1 Ответ

2 голосов
/ 22 января 2020

Вам не нужно все oop. Просто откройте указатель ссылки, который возвращает необходимый набор результатов.

create or replace procedure get_regis_limit(v_cursor out sys_refcursor) is
begin
  open v_cursor for
    select t.*
           , case when end_date > sysdate then 'TRUE' else 'FALSE' end  as results
    from register_limit t 
    where t.status='u';
end get_regis_limit;```
...