Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 将PL/SQL数组放入refcursor以返回_Oracle_Plsql_Oracle11g_Oracle10g - Fatal编程技术网

Oracle 将PL/SQL数组放入refcursor以返回

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

我是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类型。在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);