【发布时间】:2019-12-03 15:24:23
【问题描述】:
我需要创建一个函数来通过选择查询从表中生成列表。首先,我创建了一个包和函数来生成一个表,但我得到了错误。
CREATE OR REPLACE PACKAGE test AS
TYPE date_record IS RECORD(
list_target VARCHAR2(50));
TYPE date_table IS TABLE OF date_record;
FUNCTION get_ups(partition_date_in VARCHAR2)
RETURN date_table
PIPELINED;
END;
CREATE OR REPLACE PACKAGE BODY test AS
FUNCTION get_ups(partition_date_in VARCHAR2)
RETURN date_table
PIPELINED IS
rec date_record;
BEGIN
SELECT ltrim(TO_CHAR(MONTH,'mm-yyyy'),'0') BULK COLLECT AS rec
FROM
(
select add_months (trunc (to_date('09/01/2019','dd/mm/yyyy'), 'MM'), 1*Level -1)
Month FROM Dual
CONNECT BY Level <= MONTHS_BETWEEN(to_date('09/01/2019','dd/mm/yyyy'), to_date('09/02/2019','dd/mm/yyyy')) + 1
order by MONTH
);
-- you would usually have a cursor and a loop here
PIPE ROW (rec);
RETURN;
END get_ups;
END;
当我跑步时
SELECT * FROM table(test.get_ups('09/01/2019'));
Errore SQL [4063] [72000]: ORA-04063: package body "SYS.TEST" contiene errori
您能帮忙解决这个问题并生成一个列表吗?
【问题讨论】:
-
package body "SYS.TEST"为了将来参考,请不要将 SYS 模式用于您自己的对象。它是 Oracle 维护的模式,对数据库的完整性至关重要。将其用于您自己的目的可能会破坏您的数据库(在现实生活中,它会使您的 Oracle 支持合同无效)。使用 SYS 创建用户帐户并授予其权限,然后使用该架构构建您的程序。 -
运行
select * from user_errors;以查看哪些编译错误会影响该包。
标签: oracle plsql plsql-package