Zum Inhalt springen

Oracle Probleme mit Datumscasts


Erdmann

Empfohlene Beiträge

Hallo zusammen,

ich habe ein kleineres Problem bei einem Trigger in meiner Oracle XE Datenbank und will einfach nicht auf den Fehler kommen, vielleicht entdeckt ihn ja wer von euch =)

Ich habe eine Tabelle I_ZEIT in welches ich I_TAG, I_JAHR und I_MONAT habe. Zusätzlich das Feld I_WOCHE, in welchem die jeweilige Jahreswohe bei einem Insert/Update durch einen Trigger eingetragen werden soll.

Mein Trigger schaut so aus:


create or replace trigger "T_I_ZEIT_WOCHENTAG"

BEFORE insert or update 

on "I_ZEIT"

for each row

declare wochentag number;

begin

    wochentag := :new.i_zeit_monat * 10000;

    wochentag := wochentag + :new.i_zeit_jahr;

    wochentag := wochentag + :new.i_zeit_tag * 1000000;



    :new.i_zeit_woche := to_number(to_char(to_date('wochentag','ddmmyyyy'),'WW'));



end;

Der Trigger wird ohne Fehler kompiliert:
PL/SQL code successfully compiled (15:10:02) 
Wenn ich nun aber einen Insert auf den Table mache kommt folgende Fehlermeldung:
error ORA-01858: Ein nicht-numerisches Zeichen wurde gefunden, während ein numerisches Zeichen erwartet wurde ORA-06512: in "DWP1138.T_I_ZEIT_WOCHENTAG", Zeile 8 ORA-04088: Fehler bei der Ausführung von Trigger 'DWP1138.T_I_ZEIT_WOCHENTAG'

Meiner Ansicht nach ist alles korrek gecastet, ich habe es auch schon in anderen Cast Variationen versucht, aber es will einfach nicht funktionieren /o\

Vielleicht hat jemand von euch ja noch eine Idee?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen,

ich habe ein kleineres Problem bei einem Trigger in meiner Oracle XE Datenbank und will einfach nicht auf den Fehler kommen, vielleicht entdeckt ihn ja wer von euch =)

Ich habe eine Tabelle I_ZEIT in welches ich I_TAG, I_JAHR und I_MONAT habe. Zusätzlich das Feld I_WOCHE, in welchem die jeweilige Jahreswohe bei einem Insert/Update durch einen Trigger eingetragen werden soll.

Mein Trigger schaut so aus:


create or replace trigger "T_I_ZEIT_WOCHENTAG"

BEFORE insert or update 

on "I_ZEIT"

for each row

declare wochentag number;

begin

    wochentag := :new.i_zeit_monat * 10000;

    wochentag := wochentag + :new.i_zeit_jahr;

    wochentag := wochentag + :new.i_zeit_tag * 1000000;



    :new.i_zeit_woche := to_number(to_char(to_date('wochentag','ddmmyyyy'),'WW'));



end;

Der Trigger wird ohne Fehler kompiliert:
PL/SQL code successfully compiled (15:10:02) 
Wenn ich nun aber einen Insert auf den Table mache kommt folgende Fehlermeldung:
error ORA-01858: Ein nicht-numerisches Zeichen wurde gefunden, während ein numerisches Zeichen erwartet wurde ORA-06512: in "DWP1138.T_I_ZEIT_WOCHENTAG", Zeile 8 ORA-04088: Fehler bei der Ausführung von Trigger 'DWP1138.T_I_ZEIT_WOCHENTAG'

Meiner Ansicht nach ist alles korrek gecastet, ich habe es auch schon in anderen Cast Variationen versucht, aber es will einfach nicht funktionieren /o\

Vielleicht hat jemand von euch ja noch eine Idee?

Hallo,

Sieht nach einem Datenfehler aus (Die Meldung an und für sich ist ja klar)

Vor allem : Speichere Datumswert NUR in Spalten vom Typ DATE, dann musst du solche Übungen gar nicht erst durchführen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort dbwizzard,

ich hatte vorher (warum auch immer) die strikte Vorgabe das in Number Feldern zu machen, nun habe ich aber endlich doch die Erlaubnis bekommen es mit Date-Feldern machen zu dürfen, nun sollte das ganze eigentlich kein Problem mehr darstellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

zum einen darfst Du die Variable wochentag nicht in Hochkomma setzen, da es sich dann nicht mehr um Deine Variable handelt sondern um einen String mit Inhalt wochentag. Daher die Fehlermeldung.

Ferne möchtest Du die Variable Wochentag in ein Datum casten und gibst als Format 'ddmmyyyy' an. Nimm jetzt mal für die Berechnung den 01.01.2009 her. Dann bekommst Du für wochentag 1012009 als Ergebnis. Du sagst aber dass das Datum 8 Stellen ('ddmmyyyy') haben muss. Das wird Dir auch noch einen Fehler liefern.

Viele Grüße

Stefan_1

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...