如何通过pl / sql存储函数返回多行?

时间:2014-04-19 07:52:42

标签: sql oracle

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

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

1 个答案:

答案 0 :(得分:0)

通常,ref游标将传递给客户端程序,例如JDBC Result Sets。但是,在SQL中调用引用游标很容易:

select  FF(012878) from dual;