Oracle 将PL/SQL数组放入refcursor以返回
我是PL/SQL新手。我需要将数组转换为refcursor以返回记录集。SP的外观如下所示:Oracle 将PL/SQL数组放入refcursor以返回,oracle,plsql,oracle11g,oracle10g,Oracle,Plsql,Oracle11g,Oracle10g,我是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
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类型。在Oracle12c之前,这是不可能做到的(即使在那时,我相信类型也需要在包规范中定义) 在Oracle 11g中,需要使用
create type
命令将COUNTRY\u ARR
创建为SQL类型。那你的演员就可以了
即,(在PL/SQL包之外)
很抱歉,我手头没有Oracle数据库来提供更完整/准确的语法。您正在尝试转换为PL/SQL类型。在Oracle12c之前,这是不可能做到的(即使在那时,我相信类型也需要在包规范中定义) 在Oracle 11g中,需要使用
create type
命令将COUNTRY\u ARR
创建为SQL类型。那你的演员就可以了
即,(在PL/SQL包之外)
很抱歉,我手头没有Oracle数据库来提供更完整/准确的语法
CREATE TYPE country_arr AS TABLE OF VARCHAR2(60);