PL / SQL хранимая процедура l oop сравнить значение - PullRequest
0 голосов
/ 27 февраля 2020

Я использую PL SQL для создания хранимой процедуры вставки для вставки данных в таблицу REGISTER, которая имеет 2 входных параметра PR_START_FROM и PR_TO_END, и я хочу сравнить два новых входных параметра с существующими данные, как показано на этом скриншоте:

enter image description here

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

Это мой код в PL SQL, который я пробовал:

create or replace procedure TEST_LOOP(
PR_START_FROM in varchar2,
PR_END in varchar2,
V_CURSOR out SYS_REFCURSOR) is
ROWAMOUT number;
STARTNUM number;
ENDNUM number;
ID number;
begin
  select count(*) into ROWAMOUT from REGISTER;
  for ID in 1..ROWAMOUT loop
    select START_FROM,TO_END into STARTNUM,ENDNUM from REGISTER where REGISTER_ID=ID;
    if (PR_START_FROM between STARTNUM and ENDNUM) and (PR_END between STARTNUM and ENDNUM) then 
      {statement....}
    else
      {statement....}
    end if;
  end loop;
end TEST_LOOP;

Спасибо за помощь

1 Ответ

2 голосов
/ 27 февраля 2020

Вы можете проверять и возвращать true или false строковые значения через один SQL Выбрать оператор по

select decode(sign(count(*)),1,'false','true') 
  from register
 where :PR_START_FROM between start_from and to_end 
    or :PR_TO_END between start_from and to_end

, остается ли хотя бы одна из переменных связывания в диапазоне (если так , вернет false)

...