Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Oracle Probleme mit Datumscasts

Empfohlene Antworten

Veröffentlicht

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 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.

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.