У меня есть оператор выбора, который я пытаюсь зациклить и увеличить переменную в зависимости от условия оператора выбора, а затем вернуть переменную как out
, чтобы я мог что-то сделать с ней в некотором внешнем коде.Я использую оракул 11g, и я вижу несколько способов сделать это ... но я не уверен, что это лучший способ.У меня есть кое-что из того, что я пытаюсь сделать ниже, но снова остановлено из-за путаницы.
Сначала я устанавливаю свой процесс и 'в переменной'
PROCEDURE SEEKER (pMonkeyID IN Number, vMarkCounter OUT Number)
AS
BEGIN
CURSOR seeker_cur IS
Select Mokney_approved, Monkey_vaulted
from MonkeyBookApps
where MonkeyID = pMonkeyID
and Monkey_doc_type = 'BANANA'
order by docu_approv_timestamp,monkey_doc_type,monkey_doc_approved desc
OPEN seeker_cur;
begin
OPEN Seeker_cur;
vMarkCounter := 0;
Вот часть, которую яне уверен насчетДолжен ли я выполнить цикл и затем выйти, если условие не выполняется, или я должен выполнить оператор if и каким-то образом определить, существует ли запись, которая может быть больше единицы?Если так, как это будет работать?Есть ли польза от одного способа перед другим?Итак ... Я собираюсь сделать sudo-код того, что я пытаюсь сделать (ниже):
FOR (however many records) in Seeker_cur
IF seeker_cur (not found) or (returns no records)
EXIT or (break for loop);
ELSE
LOOP
vMarkCounter := vMarkCounter + 1;
EXIT WHEN seeker_cur is out of records (somehow)
END IF;
END LOOP;
END;
END SEEKER;
Я уверен, что есть несколько способов сделать это.Какие способы вы бы предложили?