Überlappen-Funktion in Oracle
Schreibe ich ein Paket zu lernen Oracle
. Ich will erstellen Sie eine OVERLAP
Funktion, die prüft, ob sich zwei Zeiträume überschneiden.
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;
Habe ich versucht zu führen, meine Funktion, aber immer einen Fehler 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;
Ich denke SELECT
funktioniert einwandfrei. Aber der Fehler tritt (nehme ich an) hier: lv_RESULT := SELECT...
. Warum?
- wenn Sie versuchen zu lernen, Oracle, warum beginnen Sie mit nicht dokumentierten Funktionen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Der IF-Anweisung war unvollständig zu - und DANN endet, WENN die waren fehlen, die habe ich jetzt Hinzugefügt.
In der Dokumentation für SELECT INTO-Anweisung ist hier. Es gibt links zu Beispielen am Ende der Seite.
Korrigierte version : return 'T' für Wahr 'N' für die Falschen (?)