View Full Version : BLOB Feld
Hallo an alle,
ich möchte ein image in einem BLOB Feld speichern.
Mein SQL dazu ist :
INSERT INTO MYLIB/TBL01P ("RID", FLDBLOB) VALUES(1,
blob('/home/myfolder/aimg.png'))
Frage : Ist das der richtige Aufbau ?
Das System meckert nicht wenn ich einen ungültigen Pfad oder ungültigen Dateinamen angebe.
Gruß
Michael
Im Prinzip ja,
Wandel mal mein Bsp. (ist auch nicht von mir, kommt von irgendwo aus dem Netz)
Felder wie
PIC_FO findest du in der Umwandlungsliste
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, 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
Hi,
danke , dank des Beispiels bin ich ein Schritt weiter gekommen
Gruß
Michael
Guten Morgen.
Wenn es nur darum geht eine Datei in ein BLOB-Feld einer Tabelle zustellen dann versuchs mal mittels
GET_BLOB_FROM_FILE('/pfad/file.png')
Dieser Aufruf muss aber unter COMMIT geschehen.
Greets