XML Extender Verwaltung und Programmierung

dxxRetrieveXML()

Zweck

Ermöglicht die Verwendung derselben DAD-Datei beim Zusammensetzen und Zerlegen. Die gespeicherte Prozedur dxxRetrieveXML() dient auch als Mittel zum Abrufen zerlegter XML-Dokumente. Als Eingabe verwendet dxxRetrieveXML() einen Puffer, der die DAD-Datei, den Namen der erstellten Ergebnistabelle und die maximale Anzahl der zurückzugebenden Zeilen enthält. Die Prozedur gibt eine Ergebnisgruppe zurück aus der Ergebnistabelle, der tatsächlichen Anzahl von Zeilen in der Ergebnisgruppe, einem Fehlercode und einem Nachrichtentext.

Zur Unterstützung dynamischer Abfragen verwendet dxxRetrieveXML() 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.

Die Anforderungen der DAD-Datei für dxxRetrieveXML() sind die gleichen wie die Anforderungen für dxxGenXML(). Der einzige Unterschied liegt darin, daß die DAD-Datei kein Eingabeparameter für dxxRetrieveXML() ist, sondern der Name einer aktivierten XML-Objektgruppe.

dxxRetrieveXML(char(UDB_SIZE) collectionName,   /* 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 47. Parameter für dxxRetrieveXML()
Parameter Beschreibung IN/OUT-Parameter
collectionName Der Name einer aktivierten XML-Objektgruppe 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

Das folgende Beispiel zeigt einen Aufruf von dxxRetrieveXML(). In diesem Beispiel wird eine Ergebnistabelle mit dem Namen XML_ORDER_TAB erstellt, die eine Spalte des Typs XMLVARCHAR enthält.

#include "dxx.h" 
#include "dxxrc.h"
 
EXEC SQL INCLUDE SQLCA;
            EXEC SQL BEGIN DECLARE SECTION;
              char    collection[32];    /* DAD-Puffer */
              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   dadbuf_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 SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);
 
              /* Host-Variable und Anzeiger initialisieren */
              strcpy(collection,"sales_ord");
              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;
              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 dxxRetrieve(:collection:collection_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 ]