-
Grafik per SQL in ein Blob importieren
Hallo Kollegen,
ich versuche eine Grafikdatei in eine SQL Tabelle mit einem BLOB Feld zu importieren, bekomme aber immer folgende Fehlermeldung :
PHP-Code:
Nachrichten-ID . . . . : CPF503E Bewertung . . . . . . : 30 Nachrichtenart . . . . : Senderkopie Sendedatum . . . . . . : 01.04.15 Sendezeit . . . . . . : 12:15:49 Nachricht . . . : Fehler bei benutzerdefinierter Funktion in Teildatei QSQPTABL. Ursache . . . . : Beim Aufrufen der benutzerdefinierten Funktion GET_BLOB_FROM_FILE in Bibliothek QSYS2 ist ein Fehler aufgetreten. Der Fehler trat beim Aufrufen des zugeordneten externen Programms oder Serviceprogramms QDBSSUDF2 in Bibliothek QSYS, Programmeingangspunkt bzw. externem Namen QSQGTBF, spezieller Name GET_BLOB_FROM_FILE_1, auf. Der Fehler trat bei Teildatei QSQPTABL Datei QSQPTABL in Bibliothek QSYS2 auf. Der Fehlercode ist 1. Fehlercodes und ihre Bedeutung: 1 -- Das externe Programm oder Serviceprogramm hat SQLSTATE 42926 zurückgegeben. Die vom Programm zurückgegebene Textnachricht ist: LOB- und XML-Lokatoren sind mit COMMIT(*NONE) nicht zulässig. .
Mein SQL-Statements sehen so aus:
PHP-Code:
CREATE TABLE Lib/BILD_LZ (SP1 BLOB ( 2 M)) INSERT INTO Lib/BILD_LZ VALUES(GET_BLOB_FROM_FILE( '/xxxxx/bilder/Bild.gif'))
Ich habe V7R2
Vielleicht kann mir einer helfen.
Herzlichen Dank im Voraus
Jenne
-
Hallo.
Das funktioniert nur wenn man unter Commitment Control arbeitet (Wie der Fehler ja auch schön sagt).
Auszug wie ich das in einem SQLRPGLE gemacht hab:
Code:
System('STRCMTCTL LCKLVL(*CHG) CMTSCOPE(*ACTGRP)');
....
Exec SQL Insert Into LIB/XTABLE
(ARBFile, ARBTsp, ARBKey, ARBFak,
ARBKNr, ARBGVo, ARBGBi, ARBUArt, ARBEMa1, ARBEMa2,
ARBEMa3, ARBEMa4, ARBEMa5, ARBFax, ARBData)
Values(:gaDName, Default, :giHKey, :gaHFak, :gaHKNr,
:gdGVo, :gdGBi, :gaHUArt, :gaHEMa1, :gaHEMa2,
:gaHEMa3, :gaHEMa4, :gaHEMa5, :gaHFax,
Get_BLOB_From_File(TRIM(:gaDatei)))
With CS;
...
Exec SQL Commit;
...
System('ENDCMTCTL');
Grüße!
-
Hallo prsbrc,
wie Du siehst arbeite ich aber doch mit Commitment Control:
PHP-Code:
Auswahl eingeben und Eingabetaste drücken. COMMIT-Steuerung . . . . . . . . > *CS Namenskonvention . . . . . . . . *SYS Anweisungsverarbeitung . . . . . *RUN Bibliotheksauswahl . . . . . . . *LIBL Listenart . . . . . . . . . . . *ALL Datenaktualisierung . . . . . . *ALWAYS Datenkopie zulässig . . . . . . *YES Datumsformat . . . . . . . . . . *JOB Trennzeichen für Datum . . . . . *JOB Zeitformat . . . . . . . . . . . *HMS Trennzeichen für Uhrzeit . . . . *JOB Dezimalzeichen . . . . . . . . . *JOB Sortierfolge . . . . . . . . . . *JOB Bibliothek . . . . . . . . . . Sprachen-ID . . . . . . . . . . *JOB
Gruß
Jenne
-
Hallo Jenne,
Die Fehlermeldung und der SQLSTT sagen aber etwas anderes:
Code:
Das externe Programm oder Serviceprogramm hat SQLSTATE 42926
zurückgegeben. Die vom Programm zurückgegebene Textnachricht ist: LOB- und
XML-Lokatoren sind mit COMMIT(*NONE) nicht zulässig.
-
Hallo andreaspr,
habe jetzt einmal in der SQL Sitzung F13 getätigt mit folgendem Ergebnis:
PHP-Code:
Sitzungsattribute ändern Auswahl eingeben und Eingabetaste drücken. Anweisungsverarbeitung . . . . *RUN * SELECT-Ausgabe . . . . . . . . 1 1 3 COMMIT-Steuerung . . . . . . . *CS * * Datumsformat . . . . . . . . . *DMY * * Datumstrennzeichen . . . . . . '.' * ' Zeitformat . . . . . . . . . . *HMS * * Zeittrennzeichen . . . . . . . ':' * ' Datenaktualisierung . . . . . *ALWAYS * Datenkopie zulässig . . . . . *YES * Namenskonvention . . . . . . . *SYS *
Und da steht doch Commit-Steuerung *CS
Gruß
Jenne
-
Besser du benutzt die "LOB File Reference Variable" aus dem SQL-Programmierhandbuch.
Hier ein Beispiel dazu zum Schreiben der Info ins IFS.
Umgedreht funktioniert dies auch zum Kopieren aus dem IFS:
http://newsolutions.de/forum-systemi...C3%BCbertragen
-
Also wenn du im STRSQL *CS angelegt hast, dann sollte es im STRSQL auch funktionieren.
Allerdings NUR im STRSQL. Im PGM wird NICHT die Commit Einstellung vom STRSQL verwendet! Dort musst du es entweder beim Kompilieren oder wie oben gezeigt im Programm zur Laufzeit gesetzt werden.
-
Und die Frage ist, ob du die SQL-Option (beim Umwandeln oder per set Option commit=*cs auch im Programm definiert hast.
-
Versuch' doch mal die Commitment-Steuerung mit Commitment Scope *JOB (anstatt *ACTGRP) zu starten. Was passiert dann?
Wenn Du überigens mit embedded SQL arbeitest, würde ich die Funktion GET_BLOB_FROM_FILE erst gar nicht verwenden, sondern eine File-Referenz-Variable definierten (SYSTYPE(BLOB_FILE).
Die Datenstruktur-Unterfelder entsprechend versorgen und dann die BLOB_FILE direkt im Insert-Statement anlegen.
Dann brauchst Du auch keine Rücksicht ob und wie die Commitment Steuerung gestartet ist zu nehemen.
Birgitta
-
Ich habe jetzt im STRSQL mit PF13 den Eintrag Commit auf *all gesetzt und danach hat der Insert geklappt. Kleiner Tipp für Unerfahrene, danach "COMMIT" eingeben damit die Änderung auch angenommen wird.
Eine Frage habe ich noch. Wenn ich mir jetzt die Datei ansehe, steht dort nur "Pointer".
Wie kann ich überprüfen, ob die Bilder korrekt in der Tabelle sind?
Herzlichen Dank an alle
Jenne
-
STRSQL is wie so vieles "stabilized", und wird seit Release V4R5 nicht mehr weiter entwickelt.
Wenn Du die Abfrage mit dem IBM i Navigator ausführst, siehst Du die Hex-Werte in der Spalte. (BLOB wird ansonsten nicht umgesetzt!)
... um COMMIT *ALL zu setzen und verwenden, muss man schon sehr genau wissen was man tut, da man ALLES sperrt! COMMIT *CHG oder *CS reichen eigentlich immer aus.
Birgitta
-
festzustellen, ob alles 'ordentlich' drin ist,
indem du es wieder ausliest und in ein PDF speicherst.
--> schon 36 Teilnehmer an der Umfrage!
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
Similar Threads
-
By MB in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 06-06-03, 22:14
-
By infomio in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 28-03-03, 16:46
-
By elmar in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 20-02-02, 07:30
-
By Woerlein in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 04-07-01, 23:16
-
By go-dany-go in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 25-04-01, 14:52
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks