我是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数据库来提供更完整/准确的语法。