NamedPreparedStatementBatch: SQL mit benannten Parametern im Batch-Modus
Der JDBC Iterator führt mehrere SQL-Anweisungen auf einmal im Batch-Modus aus, wenn sie in folgender Input-XML-Struktur jeweils in einem <namedpreparedstatementbatch>
-Block abgelegt werden. Dabei sind lediglich SQL-Anweisungen möglich, die kein ResultSet zurückliefern, also z. B. keine Abfragen mit SELECT
.
Input
<Beliebiger Elementname>
<namedpreparedstatementbatch resulttag="Ergebniselementname" timezone="Zeitzone"
format="Datumsformat">
<sql>
<!--SQL-Anweisungen (optional innerhalb eines CDATA-Blocks) -->
<!--Je Parameter ein XML-Element, gleichnamig zum entsprechenden Kindelement in <row> -->
</sql>
<rowset>
<row>
<Name><!--Wert--></Name>
</row>
<!-- Weitere <row>-Elemente für Batch-Modus -->
</rowset>
</namedpreparedstatementbatch>
</Beliebiger Elementname>
Für jedes Element <namedpreparedstatementbatch
gilt:/>
Das optionale Attribut
timezone
gibt 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
format
gibt ein Datumsformat gemäß java.text.SimpleDateFormat an und bestimmt das Format der zurückgegebenen Datumswerten.- Es enthält mindestens ein Element
<sql/>.
Für jedes XML-Element eines benannten Parameters innerhalb der SQL-Anweisung im Element <sql/>
gilt:
Der Elementname gibt den Parameter-Namen an, der mit entsprechenden Element innerhalb von
<row/>
übereinstimmt.Das optionale Attribut
mode
gibt die "Richtung" des Datenstroms an (in
: Input-Parameter für die Datenbank;out
: Ergebnisparameter aus der Datenbank;inout
: sowohl Input-Parameter als auch Ergebnisparameter; Standard:in
.Das optionale Attribut
type
gibt den Datentyp an, z. B.INTEGER
,BLOB
oderVARCHAR
(Standard).Das optionale Attribut
timezone
gibt 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
format
gibt ein Datumsformat gemäßjava.text.SimpleDateFormat
an und gibt das erwartete Format für den Wert innerhalb des entsprechenden<row>
-Elements vor.
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<]]><id type="INTEGER" />
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 <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 muss mindestens ein Element enthalten, das dem Elementnamen im SQL-Statement entspricht.
Die darin liegenden Elemente enthalten die jeweiligen Werte.
Beachten Sie für jedes Datenelement innerhalb von <row/>
, dass im Elementinhalt keine unbeabsichtigten Zeilenumbrüche definiert wurden (z.B. durch Editor-Formatierung). Andernfalls würden diese Zeilenumbrüche in der erzeugten SQL-Anweisung als \n
angefügt.
Beachten Sie Folgendes
Zulässige Datentypen für das Attribut type
zum 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>
<namedpreparedstatementbatch resulttag="namedPreparedStatementBatchWithCData"
timezone="UTC" format="dd.MM.yyyy">
<sql>
<![CDATA[UPDATE PROCESS SET X4_VERSION=4 WHERE X4_DURATION=]]>
<duration type="INTEGER" mode="inout" />
</sql>
<rowset>
<row>
<duration>101</duration>
</row>
<row>
<duration>9</duration>
</row>
</rowset>
</namedpreparedstatementbatch>
</Rootelement>
Output
Wurde die SQL-Anweisung erfolgreich ausgeführt, gibt der Adapter ein XML-Dokument mit folgender Struktur zurück:
<Data>
<Ergebniselementname count="Anzahl der betroffenen Datenbankeinträge">
<!--Status der Batch-Operation-->
</Ergebniselementname>
</Data>
Als Status der Batch-Operation sind folgende Ausgaben möglich:
(Anzahl der Zeilen)
rows affected
. oderSUCCESS_NO_INFO
oderEXECUTE_FAILED