【发布时间】:2012-02-26 21:38:00
【问题描述】:
我有一个 select 语句,我试图循环并根据 select 语句的条件增加一个变量,然后将变量作为 out 返回,以便我可以在一些前端代码中使用它。我正在使用 oracle 11g,我看到了几种方法可以做到这一点......但我不确定哪种方法是最好的。我在下面有一些我正在尝试做的事情,但由于混乱再次停止。
首先我设置我的 proc 和'in variable'
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 语句并以某种方式确定是否存在可能大于 1 的记录?如果是这样,那将如何工作?做一种方式比另一种方式有好处吗?所以...我要对我正在尝试做的事情进行 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;
我相信有几种方法可以做到这一点。你会建议什么方法?
【问题讨论】:
-
这里没有使用 COUNT() 有什么原因吗?为什么要循环?
标签: for-loop plsql oracle11g conditional procedure