pl/sql 存储函数 ora-01002 无序获取 SIMPLE
Posted
技术标签:
【中文标题】pl/sql 存储函数 ora-01002 无序获取 SIMPLE【英文标题】:pl/sql stored function ora-01002 fetch out of sequence SIMPLE 【发布时间】:2014-11-25 19:09:02 【问题描述】:抱歉,如果之前有人问过这个问题,但我在网站上搜索时找不到它。
我已经为一个 oracle DB 编写了以下存储函数,其中变量名称的更改更易于阅读。
create or replace FUNCTION MY_FUNCTION
(
INPUT IN NUMBER
, OUTPUT OUT SYS_REFCURSOR
) RETURN SYS_REFCURSOR AS
BEGIN
OPEN OUTPUT FOR
select *
FROM A_USER.A_VIEW myView
WHERE myView.ID = INPUT;
RETURN OUTPUT;
END MY_FUNCTION;
因此,当在 sql developer 中运行/测试时,您会得到一个“输出变量”选项卡。在该选项卡中有两个值:传统意义上的函数返回的 和 OUTPUT 输出变量的值"OUTPUT"。它们应该是相同的,但我为“输出”得到的值是标题中的错误,并且 正在正常工作。
我对 pl/sql 很陌生,并且从未在学校真正学习过它。有人可以给我一些关于这里发生的事情以及解决方案的见解吗? 谢谢 伊森
【问题讨论】:
抱歉,但我不明白为什么你会返回相同的值两次,如果只使用return value
就可以解决问题?
@Aramillo 这是一个普遍的问题。他们都应该工作。
【参考方案1】:
create or replace FUNCTION MY_FUNCTION
(
INPUT IN NUMBER
, OUTPUT IN OUT SYS_REFCURSOR
) RETURN SYS_REFCURSOR AS
BEGIN
OPEN OUTPUT FOR
select *
FROM A_USER.A_VIEW myView
WHERE myView.ID = INPUT;
RETURN OUTPUT;
END MY_FUNCTION;
更改输出变量(refcursor)的声明。并在调用例程中声明一个(无论我是什么)。
【讨论】:
以上是关于pl/sql 存储函数 ora-01002 无序获取 SIMPLE的主要内容,如果未能解决你的问题,请参考以下文章