如何通过pl/sql存储函数返回多行? [英] How to return multiple row by pl/sql stored function?

查看:100
本文介绍了如何通过pl/sql存储函数返回多行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我搜索了此问题,最后在此网站上找到了解决方案,但出现一个奇怪的错误.我搜索了错误,但是因为我非常了解pl/sql,所以无法解决它.这是我的函数,它试图返回表的名称:

I search for this issue and finally I found a solution on this website but I get a strange error. I searched for the error but because I know very basic of pl/sql I was not able to solve it. here is my function which is trying to return name of the table:

CREATE OR REPLACE Function FF(BSB_NUMBER IN BANK.BSB#%TYPE) RETURN SYS_REFCURSOR 
IS
    C_RESULT SYS_REFCURSOR;
BEGIN
    OPEN C_RESULT for 
    select * from bank where bank.bsb# = BSB_NUMBER;
    return C_RESULT;    
EXCEPTION
  WHEN NO_DATA_FOUND THEN
   DBMS_OUTPUT.PUT_LINE('Error ! There is no such account');
END FF;
/

运行后

Function created.

执行后

SELECT * FROM TABLE(FF(012878));


ERROR:

    ERROR at line 1:
ORA-22905: cannot access rows from a non-nested table item

推荐答案

通常,引用游标会传递给客户端程序,例如JDBC结果集.但是,在SQL中调用ref游标很容易:

Normally ref cursors are passed to client programs, such as JDBC Result Sets. However, it's easy enough to call a ref cursor in SQL:

select  FF(012878) from dual;

这篇关于如何通过pl/sql存储函数返回多行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆