【发布时间】:2015-08-14 22:02:24
【问题描述】:
我是 Oracle 的新手,我被要求编写一个程序来从表中查询一些数据。我用 2 个参数、一个光标和一个数字构建了它。基本上我有:
PROCEDURE PROC_NAME (
cursor_name IN OUT NOCOPY MY_DEFINED_CURSOR_TYPE,
a_number IN NUMBER);
AS
BEGIN
OPEN CURSOR_NAME FOR
SELECT
column
FROM
table
WHERE
table.dat_value > (SYSDATE - a_number);
END PROC_NAME;
它就像一个魅力,我能够从光标中获取列。我的问题是请求者不想传入游标,他们只想传入数字。我从来没有创建过一个不使用游标来返回查询值的过程,而我看到的示例只是这样做的。这可能吗?
【问题讨论】:
-
听起来您只是被要求将
cursor_name参数从IN OUT更改为OUT。作为文体方面的事情,我会将OUT参数放在IN参数之后,但这只是个人喜好。 -
有多种方法可以返回数据而不是游标。请求者可以指定他们想要返回的内容吗?嵌套表、关联数组、单个标量值、...?
-
请求者是否习惯了SQL Server?在 SQL Server 中,游标的返回是隐式的,不需要通过参数。
-
我使用循环和 putline 来输出值,这对于周末的请求者来说似乎已经足够了。看起来他们像变量一样返回值,但查询可以返回超过 1 行。
标签: oracle stored-procedures plsql