Der JDBC Iterator führt Stored Procedures über JDBC Callablestatements mit dynamischen Input-Daten aus, wenn sie in folgender Input-XML-Struktur abgelegt werden. Dabei sind lediglich SQL-Anweisungen möglich, die kein ResultSet zurückliefern, also z. B. keine Abfragen mit SELECT.
Input
<Beliebiger Elementname>
<callablestatementbatch resulttag="Ergebniselementname" timezone="Zeitzone"
format="Datumsformat">
<sql>
<!--SQL-Anweisungen -->
</sql>
<columns>
<column mode="Modus" name="frei wählbarer Name" index="Platzhalter"
type="Datentyp" timezone="Zeitzone" format="Datumsformat">
</column>
</columns>
<rowset>
<row>
<Name><!--Wert--></Name>
</row>
</rowset>
</callablestatementbatch>
</Beliebiger Elementname>
Für jedes Element <callablestatementbatch/> gilt:
-
Das optionale Attribut
timezonegibt eine Zeitzone gemäßjava.util.TimeZone, siehe http://docs.oracle.com/javase/1.5.0/docs/api/java/util/TimeZone.html, an, z. B.GMT+2. -
Das optionale Attribut
formatgibt ein Datumsformat gemäßjava.text.SimpleDateFormatan. -
Es enthält mindestens ein Element
<sql/>.
Falls Sie innerhalb der SQL-Anweisung oder für die Werte bzw. Daten der Tabellenspalten Zeichen verwenden, die in XML eine Bedeutung besitzen, maskieren Sie die SQL-Anweisung mit einem umgebenden CDATA -Block, z. B. <![CDATA[ SELECT * FROM TABLE WHERE ID<1 ]]> oder <rowset><row><Name><!CDATA[ XML Zeichen “<“ in CDATA Element]]></Name></row></rowset>.
So wird sichergestellt, dass die Zeichen im CDATA-Element nicht als XML interpretiert werden, sondern als Daten für den Adapter.
Für jedes Element <column/> gilt:
-
Es darf beliebig häufig verwendet werden (
0–n-mal) -
Das optionale Attribut
modegibt die "Richtung" des Datenstroms an (in: Input-Parameter für die Datenbank;out: Ergebnisparameter aus der Datenbank;inout: sowohl Input-Parameter als auch Ergebnisparameter; siehe http://download.oracle.com/javase/1,5.0/docs/guide/jdbc/getstart/callablestatement.html); Standard:in. -
Das Attribut
namegibt einen frei wählbaren Namen für ein Parameter an. -
Das Attribut
indexgibt einen ganzzahligen Platzhalterindex für den in Attributnamedefinierten Parameter an. -
Das optionale Attribut
typegibt den Datentyp an (zulässige Datentypen siehe Hinweis unten; Standard:VARCHAR). -
Das Attribut
namegibt einen frei wählbaren Namen für ein Parameter an. -
Das optionale Attribut
timezonegibt eine Zeitzone gemäßjava.util.TimeZone, siehe http://docs.oracle.com/javase/1.5.0/docs/api/java/util/TimeZone.html, an, z. B.GMT+2. -
Das optionale Attribut
formatgibt ein Datumsformat gemäßjava.text.SimpleDateFormatan.
Für jedes Element <rowset/> gilt:
-
Es darf beliebig häufig verwendet werden (
0–n-mal). -
Es enthält beliebig viele Elemente
<row/>, die die Statement-Ausführung steuern.
Für jedes Element <row/> gilt:
-
Es darf beliebig viele Elemente enthalten, die den Namen der Tabellenspalte oder den im SQL-Statement gesetzten Spalten-Alias tragen.
-
Die darin liegenden Elemente enthalten die jeweiligen Werte.
-
Die Attribute
modeundformatsind in X4 Server Revision 31469 Pflichtparameter; ab neueren Versionen sind diese optional. -
Zulässige Datentypen für das Attribut
typezum Setzen (Input-Parameter) und Lesen (ResultSet) von Werten sind:BIGINT, BINARY, BIT, BOOLEAN, BLOB, CHAR, CLOB, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, LONGNVARCHAR, LONGVARBINARY, LONGVARCHAR, NCHAR, NCLOB, NULL, NUMERIC, NVARCHAR, REAL, SMALLINT, SQLXML, TIME, TIMESTAMP, TINYINT, VARBINARY und VARCHAR(Standard),XML(alias für SQLXML).
Beispiel
<Rootelement>
<callablestatementbatch resulttag="abc" timezone="MEZ"
format="dd.MM.yyyy">
<sql>
<![CDATA[ {call getData(?)} ]]>
</sql>
<columns>
<column mode="out" name="id" index="1"
type="INTEGER">
</column>
</columns>
<rowset>
<row>
<id>TestUser</id>
</row>
</rowset>
</callablestatementbatch>
<callablestatementbatch resulttag="abc" timezone="MEZ"
format="dd.MM.yyyy">
<sql>
<![CDATA[ {call getData(?)} ]]>
</sql>
<columns>
<column mode="out" name="id" index="1"
type="INTEGER">
</column>
</columns>
<rowset>
<row>
<id>TestUser</id>
</row>
</rowset>
</callablestatementbatch>
</Rootelement>
Output
Wurde die Batch-Anweisung erfolgreich ausgeführt, gibt der Datenbankverbindungs-Baustein folgende XML-Struktur zurück:
<Data>
<Ergebniselementname>
<!--Status der Batch-Operation-->
</Ergebniselementname>
</Data>
Als Status der Batch-Operation sind folgende Ausgaben möglich:
-
(Anzahl der Zeilen)rows affected.oder -
SUCCESS_NO_INFOoder -
EXECUTE_FAILED