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:
| IN |
override | Überschreibt die Bedingung in der DAD-Datei. Der Eingabewert
basiert auf dem overrideType.
| 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);