【问题标题】:PL/SQL array into refcursor to returnPL/SQL 数组转化为 refcursor 以返回
【发布时间】:2017-02-17 10:42:09
【问题描述】:

我是 PL/SQL 新手。我需要将数组转换为 refcursor 以返回记录集。这就是 SP 的样子:

PROCEDURE EXAMPLE(p_recordset OUT SYS_REFCURSOR) AS
 TYPE COUNTRY_ARR IS TABLE OF VARCHAR2(60) INDEX BY BINARY_INTEGER;
 V_COUNTRY_ARR COUNTRY_ARR; 
 BEGIN    
    V_COUNTRY_ARR(1) := 'US';
    V_COUNTRY_ARR(2) := 'AUS';
    V_COUNTRY_ARR(3) := 'NA';

    OPEN p_recordset FOR SELECT * FROM TABLE(CAST(V_COUNTRY_ARR AS COUNTRY_ARR)); 
 END EXAMPLE;

给我一​​个错误说'错误(86,68):PL / SQL:ORA-00902:无效 数据类型'

提前谢谢你!

【问题讨论】:

    标签: oracle plsql oracle11g oracle10g


    【解决方案1】:

    您正在尝试转换为 PL/SQL 类型。直到 Oracle 12c 才能做到这一点(即使那样,我相信也需要在包规范中定义类型)。

    在 Oracle 11g 中,您需要使用 CREATE TYPE 命令将 COUNTRY_ARR 创建为 SQL 类型。然后你的演员就可以工作了。

    即,(在您的 PL/SQL 包之外)

    CREATE TYPE country_arr AS TABLE OF VARCHAR2(60);
    

    抱歉,我没有方便的 Oracle 数据库来提供更完整/准确的语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多