[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jun 2009
    Beiträge
    131
    Ich muß leider nochmal nachfragen:
    - Clob-Locator definieren ist klar
    - DECLARE CURSOR für den auszuführenden SELECT. ok.
    - OPEN vom Cursor. auch ok.
    - Dann FETCH vom Cursor. Bei into den CLob-Locator verwenden, korrekt?
    Fehlt noch was?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nach dem Fetch mit einem "exec sql Set ...;" den Lob-Locator dann auslesen, a) Hostvariable, b) xLOB_FILE.
    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

  3. #3
    Registriert seit
    Jun 2009
    Beiträge
    131
    Danke! Nach etwas Kampf mit der Definition des Locators läuft's jetzt.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nun wäre es noch nett, wenn du die funktionierende Lösung (zumindest den SQL und RPG-Teil) hier darstellen und erklären würdest. Dies könnte anderen dann ebenso hilfreich sein.
    Ich steuere ledglich Denkanstöße bei, zum Programmieren solcher Aktionen fehlt mir einfach die Zeit.
    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

  5. #5
    Registriert seit
    Jun 2009
    Beiträge
    131
    Ja, gerne.

    1.) Definieren der XML-CLOB-Datei (Streamfile im IFS), eines XML-CLOB Felds als Host-Variable und des Locators als Zeiger.

    DCL-S IXMLDoc SQLTYPE(XML_CLOB_FILE);
    DCL-S IXMLDta SQLTYPE(XML_CLOB:1024);
    DCL-S IXMLLoc SQLTYPE(XML_LOCATOR);

    2.) Setzen des Zielpfads und des Dateinamens im IFS, durch die CLOB-Datei Definitionsfelder

    DCL-S Xmlpath char(30) inz('/mydir/sql/out/');

    IXMLDoc_Name = %trim(Xmlpath) + %trim(FileGroup) + '_' +
    %trim(FileId) + '.xml';
    IXMLDoc_NL = %Len(%Trim(IXMLDoc_Name));
    IXMLDoc_FO = SQFOVR;

    3.) Bauen des Selektions-Strings in einer Variablen

    sqlstring = 'SELECT XMLDOCUMENT(XMLGROUP(TRIM(Fielda) AS "Host", +
    TRIM(Fieldb) AS "Environ", TRIM(Fieldc) AS "Country" +
    OPTION ROW "Testrow" ROOT "Testroot")) FROM File';

    4.) SQL optionen nach Bedarf setzen

    EXEC SQL
    Set Option Datfmt=*iso, TimFmt=*iso,Naming=*sys,
    CloSQLCsr=*EndActGrp;

    5.) SQL Cursor definieren unter Verwendung der obigen Variablen

    EXEC SQL
    PREPARE selectstm FROM :sqlstring;

    6.) Statisch können dann der SQL DECLARE, OPEN des Cursors, FETCH und SET bleiben.
    EXEC SQL
    DECLARE INXML CURSOR FOR selectstm;
    EXEC SQL
    OPEN INXML;
    EXEC SQL
    FETCH NEXT FROM INXML
    INTO :IXMLLoc;
    EXEC SQL
    SET :IXMLDta = :IXMLLoc;
    EXEC SQL
    SET :IXMLDoc = :IXMLLoc;
    EXEC SQL
    CLOSE INXML;



  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da ein Locator einen SQL-internen Speicherbereich belegt so musst du, wenn du ihn nicht mehr benötigst, mittels "FREE LOCATOR : MyLoc;" auch wieder freigeben.
    Ansonsten läuft dein temporärer Speicher ziemlich voll. Wenn das viele Jobs machen und jeder Job mal so eben 1000de Lobs á 1GB erstellt ist abzusehen, wann deine AS/400 runterfährt.
    Ein Fetch in einen belegten Locator impliziert keine Freigabe.
    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

Similar Threads

  1. Clob to Blob
    By dschroeder in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 31-08-16, 15:32
  2. Inhalt CLOB Feld in IFS-Datei
    By alex61 in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 06-07-16, 11:51
  3. Textteil ersetzen in CLOB - Feld
    By alex61 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 09-06-16, 13:26
  4. SQL-Anweisung UPDATE auf CLOB-Spalte mit einer Zeichenfolge >32K
    By Joshua in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 24-11-15, 10:53
  5. Dynamisches SQL bauen in RPG
    By labm in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 07-05-15, 07:55

Tags for this Thread

Berechtigungen

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