[NEWSboard IBMi Forum]

Thema: BLOB Feld

  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    832

    BLOB Feld

    Hallo an alle,

    ich möchte ein image in einem BLOB Feld speichern.

    Mein SQL dazu ist :
    PHP-Code:
    INSERT INTO MYLIB/TBL01P ("RID"FLDBLOBVALUES(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

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    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
    PHP-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=*SYSCOMMIT=*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(0NOT NULL,                  
    C+              PICTURE BLOB(8MWITH DEFAULT NULL,         
    C+              PRIMARY KEYITEMNO )                       
    C+            )                                             
    C/END-EXEC                                                  
     
    *                                                          
     ***********************************************************
     *  
    WRITE AN ITEM TO THE FILE                               
     
    *                                                          
     *        
    PIC_FO FILE OPTIONS (SEE SQL CONSTANTSABOVE)  
     *      
    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!)

  3. #3
    Registriert seit
    Jan 2001
    Beiträge
    832
    Hi,

    danke , dank des Beispiels bin ich ein Schritt weiter gekommen
    Gruß
    Michael

  4. #4
    Registriert seit
    May 2007
    Beiträge
    295
    Guten Morgen.
    Wenn es nur darum geht eine Datei in ein BLOB-Feld einer Tabelle zustellen dann versuchs mal mittels
    Code:
    GET_BLOB_FROM_FILE('/pfad/file.png')
    Dieser Aufruf muss aber unter COMMIT geschehen.

    Greets
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

Similar Threads

  1. input/output feld dspf --> automatisch aus Feld springen
    By _MG_ in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 15-09-17, 16:02
  2. Clob to Blob
    By dschroeder in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 31-08-16, 16:32
  3. Grafik per SQL in ein Blob importieren
    By Jenne in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 17-04-15, 09:41
  4. BLOB Feld aus SQL-Tabelle ins IFS übertragen
    By GJV23 in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 19-02-15, 12:09
  5. Blob-Handling
    By infomio in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 28-03-03, 17:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •