У меня есть оператор select, который я пытаюсь перебрать и увеличивать переменную на основе условия оператора select, а затем возвращать переменную как out
, чтобы я мог что-то с ней сделать в некотором коде интерфейса. Я использую oracle 11g, и я вижу несколько способов, которыми я могу это сделать ... но я не уверен, что это лучший способ. У меня есть кое-что из того, что я пытаюсь сделать ниже, но снова остановился из-за путаницы.записи pl/sql loop select oracle plsql
Сначала я устанавливаю мой процедурный и «в переменную»
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 и каким-то образом определить, есть ли запись, которая может быть больше одной? Если да, то как это будет работать? Есть ли преимущество в том, чтобы делать один путь над другим? Итак ... Я собираюсь Судо-код, что я пытаюсь сделать (ниже):
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;
Я уверен, что есть несколько способов сделать это. Какие способы вы могли бы предложить?
Есть ли причина, по которой вы не используете COUNT() здесь? Зачем вообще цитировать? – eaolson