【发布时间】:2014-04-29 13:36:35
【问题描述】:
我正在写一个包来学习Oracle。我想创建一个OVERLAP 函数来检查两个日期范围是否相互重叠。
FUNCTION OVERLAP(p_START_DATE_1 DATE, p_END_DATE_1 DATE,
p_START_DATE_2 DATE, p_END_DATE_2 DATE) RETURN VARCHAR2 AS
lv_RESULT VARCHAR2(1);
BEGIN
lv_RESULT := SELECT 'T' AS overlap FROM dual
WHERE (p_START_DATE_1, p_END_DATE_1) overlaps (p_START_DATE_2, p_END_DATE_2);
IF (lv_RESULT = 'T')
RETURN 'T';
RETURN 'N';
END OVERLAP;
我尝试执行我的函数,但收到错误ORA-04063: package body 'XYZ' contains errors...
SELECT KP_XYZ_PACKAGE_SQL.OVERLAP(
TO_DATE('01/01/2014', 'DD/MM/YYYY'),
TO_DATE('01/12/2014', 'DD/MM/YYYY'),
TO_DATE('01/02/2014', 'DD/MM/YYYY'),
TO_DATE('01/05/2014', 'DD/MM/YYYY'))
FROM DUAL;
我认为SELECT 工作正常。但是错误发生在这里(我想):lv_RESULT := SELECT...。为什么?
【问题讨论】:
-
如果您尝试学习 Oracle,为什么要从未记录的特性开始?