-
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!)
-
hier mal ein Uralt Bsp. aus dem Netz, das wir damals für die ersten Tests verwendet haben
Code:
D SQL_FILE_READ...
D C CONST(2)
D SQL_FILE_CREATE...
D C CONST(8)
D SQL_FILE_OVERWRITE...
D C CONST(16)
D SQL_FILE_APPEND...
D C CONST(32)
D ITEM S 5P 0
D PIC S SQLTYPE(BLOB_FILE)
D OUT S SQLTYPE(BLOB_FILE)
C/EXEC SQL SET OPTION NAMING=*SYS,
C+ COMMIT=*NONE
C/END-EXEC
*
***********************************************************
* CREATE A FILE WITH A BLOB COLUMN
***********************************************************
C/EXEC SQL DROP TABLE ITEMPIC
C/END-EXEC
*
***********************************************************
* CREATE A FILE WITH A BLOB COLUMN
***********************************************************
C/EXEC SQL
C+ CREATE TABLE ITEMPIC
C+ (ITEMNO DEC(5 , 0) NOT NULL,
C+ PICTURE BLOB(8M) WITH DEFAULT NULL,
C+ PRIMARY KEY( ITEMNO )
C+ )
C/END-EXEC
*
***********************************************************
* WRITE AN ITEM TO THE FILE
*
* PIC_FO = FILE OPTIONS (SEE SQL CONSTANTS, ABOVE)
* PIC_NAME = FILE NAME TO SET BLOB TO
* PIC_NL = LENGTH OF FILE NAME
*
* TEST.JPG WILL BE WRITTEN TO THE 2ND COLUMN OF THE FILE
***********************************************************
C EVAL ITEM = 10001
C EVAL PIC_FO = SQL_FILE_READ
C EVAL PIC_NAME = '/TMP/TEST.BMP' MIT BMP !!!!!
C EVAL PIC_NL = %LEN(%TRIMR(PIC_NAME))
*
C/EXEC SQL INSERT INTO ITEMPIC VALUES (:ITEM,:PIC)
C/END-EXEC
C EVAL ITEM = 10002
C EVAL PIC_FO = SQL_FILE_READ
C EVAL PIC_NAME = '/TMP/TEST.PDF' MIT PDF !!!!
C EVAL PIC_NL = %LEN(%TRIMR(PIC_NAME))
*
C/EXEC SQL INSERT INTO ITEMPIC VALUES (:ITEM,:PIC)
C/END-EXEC
*
***********************************************************
* READ A RECORD
*
*
* OUT_FO = FILE OPTIONS (CREATE FILE OR OVERWRITE IT)
***********************************************************
C EVAL ITEM = 10001
C EVAL OUT_FO = SQL_FILE_OVERWRITE
C EVAL OUT_NAME = '/TMP/TESTOUT.BMP'
C EVAL OUT_NL = %LEN(%TRIMR(OUT_NAME))
C/EXEC SQL SELECT PICTURE
C+ INTO :OUT
C+ FROM ITEMPIC
C+ WHERE ITEMNO = :ITEM
C/END-EXEC
C EVAL ITEM = 10002
C EVAL OUT_FO = SQL_FILE_OVERWRITE
C EVAL OUT_NAME = '/TMP/TESTOUT.PDF'
C EVAL OUT_NL = %LEN(%TRIMR(OUT_NAME))
C/EXEC SQL SELECT PICTURE
C+ INTO :OUT
C+ FROM ITEMPIC
C+ WHERE ITEMNO = :ITEM
C/END-EXEC
C EVAL *INLR = *ON
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
wie Du siehst arbeite ich aber doch mit Commitment Control
sony e1 handytasche
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