XML Extender Verwaltung und Programmierung

dxxGenXML()

Zweck

Konstruiert XML-Dokumente mit Daten, die in den XML-Objektgruppendateien gespeichert sind; diese Dateien werden über die <Xcollection> in der DAD-Datei angegeben. Außerdem fügt die Prozedur jedes XML-Dokument als Zeile in die Ergebnistabelle ein. Sie können auch einen Cursor in der Ergebnistabelle öffnen und die Ergebnisgruppe abrufen.

Für eine höhere Flexibilität gibt dxxGenXML() dem Benutzer außerdem die Möglichkeit, die maximale Anzahl der zu generierenden Zeilen in der Ergebnistabelle anzugeben. Dadurch wird die Dauer verringert, die die Anwendung während eines Testprozesses auf die Ergebnisse warten muß. Die gespeicherte Prozedur gibt die Anzahl der tatsächlichen Zeilen in der Tabelle zurück sowie alle Fehlerinformationen einschließlich Fehlercodes und Fehlermeldungen.

Zur Unterstützung dynamischer Abfragen verwendet dxxGenXML() den Eingabeparameter override. Entsprechend der Eingabe von overrideType kann die Anwendung die SQL_stmt-Anweisung für die SQL-Zuordnung überschreiben oder die Bedingungen in RDB_node für die RDB_node-Zuordnung in der DAD-Datei. Der Eingabeparameter overrideType wird verwendet, um den Typ von override klarzustellen. Ausführliche Informationen zum Parameter override finden Sie im Abschnitt Werte in der DAD-Datei dynamisch überschreiben.

dxxGenXML(CLOB(100K)     DAD,             /* Eingabe */
          char(UDB_SIZE) resultTabName,   /* Eingabe */
          integer        overrideType     /* Eingabe */
          varchar(1024)  override,        /* Eingabe */
          integer        maxRows,         /* Eingabe */
          integer        numRows,         /* Ausgabe */
          long           returnCode,      /* Ausgabe */
          varchar(1024)  returnMsg)       /* Ausgabe */
 

Parameter

Tabelle 46. Parameter für dxxGenXML()
Parameter Beschreibung IN/OUT-Parameter
DAD Ein CLOB mit der DAD-Datei. IN
resultTabName Der Name der Ergebnistabelle, diese Datei sollte vor dem Aufruf bereits vorhanden sein. Die Tabelle enthält nur eine Spalte mit dem Typ XMLVARCHAR oder XMLCLOB. IN
overrideType Eine Markierung, die den Typ des Parameters override angibt:
  • NO_OVERRIDE: Kein Überschreiben.
  • SQL_OVERRIDE: Überschreiben durch eine SQL_stmt-Anweisung.
  • XML_OVERRIDE: Überschreiben durch eine XPath-Bedingung.
IN
override Überschreibt die Bedingung in der DAD-Datei. Der Eingabewert basiert auf dem overrideType.
  • NO_OVERRIDE: Eine Nullzeichenfolge.
  • SQL_OVERRIDE: Eine gültige SQL-Anweisung. Für diesen overrideType muß die SQL-Zuordnung in der DAD-Datei verwendet werden. Die SQL-Eingabeanweisung überschreibt die SQL_stmt-Anweisung in der DAD-Datei.
  • XML_OVERRIDE: Eine Zeichenfolge, die einen oder mehrere Ausdrücke in doppelten Anführungszeichen, durch "AND" getrennt, enthält. Für diesen overrideType muß die RDB_node-Zuordnung in der DAD-Datei verwendet werden.
IN
maxRows Die maximale Anzahl von Zeilen in der Ergebnistabelle. IN
numRows Die tatsächliche Anzahl generierter Zeilen in der Ergebnistabelle. OUT
returnCode Der Rückkehrcode von der gespeicherten Prozedur. OUT
returnMsg Der Nachrichtentext, der im Fehlerfall zurückgegeben wird. OUT

Beispiele

Im folgenden Beispiel wird davon ausgegangen, daß die Ergebnistabelle mit dem Namen XML_ORDER_TAB erstellt wird und eine Spalte des Typs XMLVARCHAR enthält.

#include "dxx.h" 
#include "dxxrc.h"
 
EXEC SQL INCLUDE SQLCA;
            EXEC SQL BEGIN DECLARE SECTION;
              SQL TYPE is CLOB(100K)  dad;              /* DAD */
              SQL TYPE is CLOB_FILE   dadFile;          /* DAD-Datei */
              char                    result_tab[32];   /* Name der Ergebnistabelle */
              char                    override[2];      /* Überschreiben, auf NULL gesetzt*/
              short                   overrideType;     /* definiert in dxx.h */
              short                   max_row;          /* maximale Anzahl Zeilen */
              short                   num_row;          /* tatsächliche Anzahl Zeilen */
              long                    returnCode;       /* Rückkehr-Fehlercode */
              char                    returnMsg[1024];  /* Fehlernachrichtentext */
              short                   dad_ind;
              short                   rtab_ind;
              short                   ovtype_ind;
              short                   ov_inde;
              short                   maxrow_ind;
              short                   numrow_ind;
              short                   returnCode_ind;
              short                   returnMsg_ind;
 
              EXEC SQL END DECLARE SECTION;
              
              /* Tabelle erstellen */
              EXEC CREATE TABLE xml_order_tab (xmlorder XMLVarchar);
 
              /* Daten aus einer Datei in ein CLOB einlesen */
              strcpy(dadfile.name,"e:\dxx\dad\litem3.dad");
              dadfile.name_length = strlen("e:\dxx\dad\litem3.dad");
              dadfile.file_options = SQL_FILE_READ;
              EXEC SQL VALUES (:dadfile) INTO :dad;
              strcpy(result_tab,"xml_order_tab");
              override[0] = '\0';
              overrideType = NO_OVERRIDE;
              max_row = 500;
              num_row = 0;
              returnCode = 0;
              msg_txt[0] = '\0';
              collection_ind = 0;
              dad_ind = 0;
              rtab_ind = 0;
              ov_ind = -1;
              ovtype_ind = 0;
              maxrow_ind = 0;
              numrow_ind = -1;
              returnCode_ind = -1;
              returnMsg_ind = -1;
 
              /* Gespeicherte Prozedur aufrufen */
              EXEC SQL CALL dxxGenXML(:dad:dad_ind;
                     :result_tab:rtab_ind,
                     :overrideType:ovtype_ind,:override:ov_ind,
                     :max_row:maxrow_ind,:num_row:numrow_ind,
                     :returnCode:returnCode_ind,:returnMsg:returnMsg_ind); 


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]