prog:oracle12c_r2_ora-01858_ora-01722_conversion_functions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
prog:oracle12c_r2_ora-01858_ora-01722_conversion_functions [2019/09/02 17:27] – gpipperr | prog:oracle12c_r2_ora-01858_ora-01722_conversion_functions [2019/09/03 09:43] (aktuell) – [Test Case] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | =====Ab Oracle 12c R2 - Endlich mit ORA-01858 und ORA-01722 umgehen können - Fehler bei der Konvertierungs pro-aktiv behandeln und Datenformat vorher validieren erkennen===== | ||
+ | |||
+ | **ab Oracle 12c R2 !** | ||
+ | |||
+ | **Problem**: | ||
+ | |||
+ | Wer kennt nicht das Problem, dass bei einem ETL Load eine von xxxxx tausend Zeilen einen Fehler aufweist und der ganze Import mit einem " | ||
+ | |||
+ | Wie kann nun aber der fehlerhafte Datensatz gefunden werden? | ||
+ | |||
+ | |||
+ | **Lösung** | ||
+ | |||
+ | Ab der Version 12c R2 der DB steht uns dazu die **VALIDATE_CONVERSION** Function zur Verfügung und Erweiterte Parameter bei den to_xxxx Funktionen, die eine Fehlerhandling ermöglichen. | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | === Test Case === | ||
+ | |||
+ | Test Daten: | ||
+ | <code sql > | ||
+ | create table convtest ( id number, wert1 varchar2(20)); | ||
+ | |||
+ | insert into convtest (id,wert1) values ( 1,' | ||
+ | insert into convtest (id,wert1) values ( 2,' | ||
+ | insert into convtest (id,wert1) values ( 3,' | ||
+ | insert into convtest (id,wert1) values ( 4,' | ||
+ | |||
+ | commit; | ||
+ | </ | ||
+ | |||
+ | |||
+ | Alle Zeilen mit Zahlen mit der **VALIDATE_CONVERSION** Funktion erkennen: | ||
+ | |||
+ | <code sql> | ||
+ | select id from convtest where VALIDATE_CONVERSION(wert1 AS number) = 1; | ||
+ | |||
+ | ID | ||
+ | --- | ||
+ | 1 | ||
+ | | ||
+ | -- With format mask | ||
+ | select id from convtest where VALIDATE_CONVERSION(wert1 AS number, | ||
+ | |||
+ | ID | ||
+ | ----- | ||
+ | 2 | ||
+ | | ||
+ | -- read Date | ||
+ | |||
+ | select id from convtest where VALIDATE_CONVERSION(wert1 AS date, | ||
+ | |||
+ | ID | ||
+ | ----- | ||
+ | 3 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Problem PL/SQL: ORA-43918: This Argument Must Be A Literal ==== | ||
+ | |||
+ | In einer 12.2 R2 Umgebung habe ich allerdings folgendes Problem : PL/SQL: ORA-43918: This Argument Must Be A Literal (Doc ID 2463944.1) | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Demnächst mehr | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ====Quellen ==== | ||
+ | |||
+ | |||
+ | Web: | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | Oracle: | ||
+ | |||
+ | * VALIDATE_CONVERSION => https:// | ||
prog/oracle12c_r2_ora-01858_ora-01722_conversion_functions.txt · Zuletzt geändert: 2019/09/03 09:43 von gpipperr