PDA

View Full Version : Get_Xml_File schlägt fehl mit SQL Code -404



derMuller
13-08-19, 09:36
Hallo Zusammen,

ich habe einen Table zum Speichern von Dateien aus dem IFS erstellt.
Das Feld für die Datei habe ich wie folgt defninert:

...
DateiInhalt for IDDATE blob
...

Im vorliegenden Fall handelt es sich um eine XML Datei die ich speichern möchte.
Das Ganze erfolgt mit folgendem Befehl:

insert into impd00 (dateiInhalt) values(get_xml_file(trim(:dateiPfad))));

Die Variable Dateipfad enthält den Pfad zur XML Datei im IFS.
Hier z.B. '/home/XML/Test.xml'. Diese ist gerade mal 1,87 MB groß.
Das Ganze klappt mit vielen Dateien problemlos.
Bei dieser Datei erhalte ich den SQL Fehler 404.
Der Joblog sagt dazu folgendes:

Nachricht . . . : Wert für Spalte oder Variable DATEIINHALT zu lang.
Ursache . . . . : In einer Anweisung INSERT, UPDATE, MERGE, SET, VALUES INTO
oder GET DIAGNOSTICS ist ein Wert angegeben, der die maximale Länge für
Zeichenfolgen, die in DATEIINHALT gespeichert werden können, überschreitet.
Die Länge von DATEIINHALT ist 0, und die Länge der Zeichenfolge ist 0.
Fehlerbeseitigung: Länge der Zeichenfolge von 0 auf maximal 0 verringern und
Anforderung wiederholen.

Hat jemand eine Idee was ich falsch mache?

Danke im Vorraus!

dschroeder
13-08-19, 10:06
Bei der Definition der Blob Tabelle kannst du angeben, wie groß der Blob maximal sein soll. Ich glaube, 2 GB ist der maximale Wert. Wenn du nichts angegeben hast, zieht irgendein Default Wert. Der könnte zu klein sein.

Dieter

Fuerchau
13-08-19, 12:34
Hinzukommt, dass XML nur Text enthält, statt BLOB (Binary) solltest du besser DBCLOB verwenden.

derMuller
13-08-19, 12:39
Danke für die schnelle Hilfe.
Das Feld war anscheinend wirklich zu klein definiert (default).
Ich habe nun eine bestimmte Größe angegeben und das Ganze ist ohne Fehler durchgelaufen.

@Fuerchau
Danke für den Hinweis.
In dem Feld können aber auch andere Dateien in den versch. Formaten stehen.