Oracle Vergleich date und string

MaBue75

Grünschnabel
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
 
Zurück