# Oracle Vergleich date und string



## MaBue75 (16. Januar 2007)

Hallo,

für mein Datenmodell benötige ich eine Art Kalender, welcher Informationen über die Feiertage des Jahres 2007 enthält. So hab ich innerhalb einer Schleife, sämtliche Datensätze vom 01.01.2007 bis 31.12.2007 anlegen lassen. Im nächsten Schritt wollte ich die zum Teil regionalen Feiertage markieren. Leider funktioniert der Vergleich in der Where-Klausel offensichtlich nicht, hat jemand eine Idee? Hab schon einige Variationen hinsichtlich der String-Convertierung ausprobiert, keine führte zum Erfolg. Lass ich die Where-Klausel weg, so arbeitet die Update-Anweisung korrekt und das ganze Jahr wird zum Feiertag deklariert  .

Hier die Prozedure:
CREATE OR REPLACE PROCEDURE Kalender_Init (
    erster_Wochentag IN Kalender.Wochentag%TYPE)
IS
    Feiertag_Var Date;
    Wochentag Kalender.Wochentag%TYPE DEFAULT erster_Wochentag;
    Datumlauf DATE Default TO_DATE('01.01.2007','DD.MM.YYYY');
    DatumEnd DATE DEFAULT TO_Date('01.01.2008','DD.MM.YYYY');
    Arbeitszeit Kalender.Referenzarbeitszeit%TYPE DEFAULT 8;

BEGIN
    WHILE Datumlauf<DatumEnd  //Das gesamte Jahr 2007 initialisieren
    LOOP //Werte für den nächsten Tag berechnen, d.h. folgender Wochentag und Referenzarbeitszeit
    INSERT INTO "DIPLOM"."KALENDER"("DATUM", "WOCHENTAG", "FEIERTAG", "REFERENZARBEITSZEIT")
    VALUES (TO_DATE( Datumlauf ,'DD.MM.YYYY'), Wochentag, 'N', Arbeitszeit);
        CASE Wochentag
            When 'Montag' then
                Wochentag:='Dienstag';
            When 'Dienstag' then
                Wochentag:='Mittwoch';
            When 'Mittwoch' then
                Wochentag:= 'Donnerstag';
            When 'Donnerstag' then
                Wochentag:='Freitag';
                Arbeitszeit:=7;
            When 'Freitag'then
                Wochentag:='Sonnabend';
                Arbeitszeit:=0;
            When 'Sonnabend' then
                Wochentag:='Sonntag';
            ELSE Wochentag:='Montag';
                Arbeitszeit:=8;
        End CASE;
        Datumlauf:=Datumlauf+1;
    END LOOP;
    Feiertag_Var:= TO_DATE('01.01.2007 00:00:00','DD.MM.YYYY HH24:MI:SS');
    UPDATE Kalender SET Feiertag='J' Where (Kalender.Datum=Feiertag_Var);
End Kalender_Init; //Kalender_Init
go

Besten Dank im Voraus


----------

