Oracle PL / SQL, работающий со значениями, не найденными в курсоре - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно найти значение в курсоре и что-то с ним сделать, также, если значение не найдено, мне нужно выполнить другое действие. Я использую курсор FOR LOOP:

CURSOR cursor1 IS
   SELECT....;

FOR c1 in cursor1 LOOP
    IF c1.myvalue = l_val THEN
        --the value found
        --perform an action
    END IF;
END LOOP;

Вышеприведенное прекрасно работает, когда я что-то делаю со значениями, найденными в курсоре, но как мне захватить значения, которые не были найдены?

1 Ответ

4 голосов
/ 18 октября 2019

Я думаю, вы имеете в виду, что вы должны делать, если курсор не возвращает совпадение для l_val?

Используя ваш метод, вы можете сделать это:

l_found BOOLEAN := FALSE;
CURSOR cursor1 IS
   SELECT....;

FOR c1 in cursor1 LOOP
    IF c1.myvalue = l_val THEN
        --the value found
        --perform an action
        l_found := TRUE;
    END IF;
END LOOP;

IF NOT l_found THEN
    -- Do something when not found
END IF;

Но на самом делеВы не хотите получать все строки в инструкции SELECT, а затем проверять каждую из них на соответствие. Вместо этого вы можете сделать сопоставление в SELECT:

l_found BOOLEAN := FALSE;
CURSOR cursor1 IS
   SELECT....
   WHERE myvalue = l_val;

FOR c1 in cursor1 LOOP
   --the value found
   --perform an action
   l_found := TRUE;
END LOOP;

IF NOT l_found THEN
    -- Do something when not found
END IF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...