Ü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?
InformationsquelleAutor Nickon | 2014-04-29
Schreibe einen Kommentar