[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    15

    SQL-Anweisung UPDATE auf CLOB-Spalte mit einer Zeichenfolge >32K

    Hallo SQL-Experten.
    Mit der SQL-UPDATE-Anweisung soll ein CLOB-Feld mit einer XML-Zeichenfolge die etwa 86k groß ist, gefüllt werden. Die Anweisung wird über einen ODBC-Treiber an die AS/400 (V7R2) gesendet.

    Die AS/400 verweigert die Ausführung, mit der Begründung, dass ein String maximal 32k groß sein kann. Die Ausführung auf der AS/400 mit dem Befehl RUNSQLSTM mit dem Befehl in einer IFS-Datei klappt auch nicht. Das Problem sollte daher eigentlich nicht der ODBC-Treiber sein.

    Meine Frage: Wie bekomme ich die XML-Zeichenfolge in das CLOB-Feld, wenn ein WIN-Programm die Daten auf der AS/400 ablegen soll? Das Aufteilen in viele Einzel-Felder ist nicht gewünscht.

    Danke für eure Unterstützung.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Mit dem SQL-Befehl GET_CLOB_FROM_FILE kannst Du eine IFS-Datei direkt in ein CLOB-Feld übertragen.

    Code:
    Insert Into YourTable
    Values(Get_CLOB_From_File('/your/IFS/File.xml', 0));
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Jan 2001
    Beiträge
    15
    Danke Birgitta,

    doch wie kriege ich die IFS-Datei über den ODBC-Treiber auf die AS/400 oder kann die Datei auf einem Order im WIN bleiben?

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    wie wär's mit update mytable set myKLOPPfield = string1 concat string2 ?

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Wenn die Datei im IFS steht ist sie doch schon auf der IBM i also kannst Du doch direkt mit GET_CLOB_FROM_FILE zugreifen. Oder sehe ich da irgendwas falsch?

    Übrigens: ob Du eine IFS-Datei auf die AS/400 bekommst wage ich zu bezweifeln

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  6. #6
    Registriert seit
    Jan 2001
    Beiträge
    15
    Noch ist der XML-String in der WIN-Welt.
    Also eine IFS-Freigabe auf einen IFS-Ordner einrichten und dem Ordner im WIN verbinden.
    Dann sollte der UPDATE mit GET_CLOB_FROM_FILE funktionieren, wenn der XML-String hier abgelegt wird.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Übrigens: ob Du eine IFS-Datei auf die AS/400 bekommst wage ich zu bezweifeln
    Birgitta
    ... ich habe da noch eine 150 stehen, da steht dick und fett AS/400 drauf und es ist keinerlei Problem da eine IFS Datei zu erzeugen, auch aus dem Netzwerk.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Jan 2001
    Beiträge
    15
    Ich werde sehen, was mein SW-Provider dazu sagt.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das kannst du natürlich nicht in einen Command packen.
    Aber als Parameter per CreateParameter und dem Typ adLongVarChar bzw. per Unicode mit adLongVarWChar. Als "Size" kannst du gerne 100MB angeben.
    Dann sollte ein "Insert into myfile (CLOBName) values(?)" funktionieren.
    Binär (BLOB) per adLongVarBinary müsste ebenso klappen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Jan 2001
    Beiträge
    15
    Leider hat der SW-Provider Bedenken, dass in einer Multi-Thread-Umgebung andere Prozesse auf die IFS-Datei zugreifen bevor der SQL-UPDATE abgeschlossen ist. Habt Ihr dazu Anregungen?
    Vielen Dank
    Joshua

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ich habe schon vor Jahren Bilder (jpg, wmf, bmp, ...) in einem BLOB per ODBC auf die AS/400 geschaufelt und wieder heruntergeladen.
    Wieso stellt sich das dann für XML-Strings als Problem dar?
    Ich habe einfach ein Command-Objekt erstellt:
    "insert into mytyble (f1, f2, f3) values(?, ?, ?)"
    Der 1. Zugriff auf die Parameter führt bei der AS/400-Verbindung automatisch zur korrekten Definition der Parameter. Die Bilddatei habe ich in ein ByteArray geladen und das Array dann einfach dem richtigen Parameter zugewiesen. Der Execute hat die Daten dann auf die AS/400 geschoben.
    Auch mit Bildern vom mehreren 100KB funktionieren hier einwandfrei seit Windows XP und V5.
    Für CLOB's statt BLOB's ändert sich bei ADODB nichts, da nehme ich halt Strings statt Byte().
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  12. #12
    Registriert seit
    Jan 2001
    Beiträge
    15
    Bei Verwendung des ODBC-Treibers im .NET-Umfeld kommt die Meldung, dass der Befehl zu lang ist.
    UPDATE Tabelle SET Var = longvarchar(' Click image for larger version. 

Name:	SQLFehler.jpg 
Views:	54 
Size:	67,3 KB 
ID:	360

Similar Threads

  1. Antworten: 9
    Letzter Beitrag: 10-04-14, 16:18
  2. Antworten: 1
    Letzter Beitrag: 17-10-02, 14:32
  3. Zeichenfolge nur in RPG O-Bestimmungen suchen
    By Schnichels in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 15-05-02, 10:37
  4. Zeichenfolge in PF suchen
    By Schnichels in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 18-04-02, 11:52
  5. Optimierung SQL Anweisung
    By Cassius in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-03-02, 20:28

Tags for this Thread

Berechtigungen

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