将PL/SQL数组转换为refcursor返回



我是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;

显示错误:error (86,68): PL/SQL: ORA-00902: invalid数据类型的

提前感谢!

您正在尝试转换为PL/SQL类型。这在Oracle 12c之前是无法实现的(而且,即使在那时,类型也需要在包规范中定义,我相信)。

在Oracle 11g中,需要使用CREATE TYPE命令将COUNTRY_ARR创建为SQL类型。那么你的石膏就会起作用了。

。,(在PL/SQL包之外)

CREATE TYPE country_arr AS TABLE OF VARCHAR2(60);

对不起,我没有Oracle数据库来提供更完整/准确的语法。

最新更新