Die INSERT-Anweisung fügt eine Zeile in eine Datenbanktabelle ein.
Eine einzelne Zeile wird in die durch Tabellenverweisangegebene Tabelle eingefügt. Der Spaltenname gibt die Spalten in der Zieltabelle an, die Sonderwerte erhalten sollen. Diese Werte werden von den Ausdrücken in der VALUES-Klausel festgelegt (der erste Ausdruck nennt den Wert der ersten benannten Spalte usw.). Die Anzahl der Ausdrücke in der VALUES-Klausel muss mit der Anzahl der benannten Spalten übereinstimmen. Spalten in der Tabelle, die nicht in der Liste enthalten sind, erhalten ihre Standardwerte.
Wird kein Schemaname angegeben, wird das Standardschema des Benutzers der Broker-Datenbank verwendet.
Wenn Sie keinen Datenquellnamen angeben, wird die Datenbank verwendet, auf die das Datenquellattribut des Knotens verweist.
Weitere Informationen zur Behandlung von Datenbankfehlern finden Sie unter Datenbankstatus erfassen.
Im folgenden Beispiel wird davon ausgegangen, dass die Eigenschaft data source (Datenquelle) konfiguriert wurde und dass die von ihr angegebene Datenbank TABLE1 heißt und die Spalten A, B und C enthält.
<A> <B>1</B> <C>2</C> <D>3</D> </A>
INSERT INTO Database.TABLE1(A, B, C) VALUES (Body.A.B, Body.A.C, Body.A.D);
-- Variablen deklarieren, die den Namen der Datenquelle, des Schemas und der Tabelle halten sollen und -- ihre Standardwerte einrichten DECLARE Source CHARACTER 'Produktion'; DECLARE Schema CHARACTER 'db2admin'; DECLARE Table CHARACTER 'DynamischeTabelle1'; -- Hier steht der Code, der ihren tatsächlicher Wert berechnet -- Daten in die Tabelle einfügen INSERT INTO Database.{Source}.{Schema}.{Table} (Name, Value) values ('Joe', 12.34);
Daten in eine Datenbank einfügen
Wenn die Datenbankspalte, in die Sie Daten einfügen möchten, auf einen binären Datentyp gesetzt wird (z. B. BLOB), muss die Eingabenachricht im Bitstromformat dargestellt werden. Verwenden Sie den folgenden ESQL-Code, wenn sich die Eingabenachricht in der BLOB-Domäne befindet:DECLARE msgBitStream BLOB InputRoot.BLOB.BLOB; INSERT INTO Database.TABLE1(MSGDATA) VALUES (msgBitStream);
DECLARE propRef REFERENCE TO InputRoot.Properties; DECLARE msgBitStream BLOB ASBITSTREAM(InputRoot.XMLNS, propRef.Encoding, propRef.CodedCharSetId); INSERT INTO Database.TABLE1(MSGDATA) VALUES (msgBitStream);
DECLARE propRef REFERENCE TO InputRoot.Properties; DECLARE inCCSID INT propRef.CodedCharSetId; DECLARE inEncoding INT propRef.Encoding; DECLARE msgBitStream BLOB ASBITSTREAM(InputRoot.XMLNS, inEncoding, inCCSID); INSERT INTO Database.TABLE1(MSGDATA, MSGENCODING, MSGCCSID) VALUES (msgBitStream, inEncoding, inCCSID);
Wenn die gesamte Nachricht mit dem zugehörigen MQMD-Header gespeichert und später zur Wiederherstellung der gesamten Nachricht in einem anderen Nachrichtenfluss auf einer anderen Plattform mit einer unterschiedlichen Codepage und Codierung verwendet werden soll, kann die Datenbanktabelle als Erweiterung des oben genannten Beispiels zum Speichern aller numerischen Felder des MQMD-Headers erweitert werden.
Beispiel: Ein Nachrichtenfluss, der unter AIX ausgeführt wird, fügt einen Nachrichtenbitstrom in die Datenbanktabelle ein, und ein anderer Nachrichtenfluss, der unter Windows ausgeführt wird, ruft diesen ab und versucht, die Nachricht mit dem gespeicherten MQMD-Header wiederherzustellen.
BackoutCount (MQLONG) CodedCharSetId (MQLONG) Encoding (MQLONG) Expiry (MQLONG) Feedback (MQLONG) MsgFlags (MQLONG) MsgSeqNumber (MQLONG) MsgType (MQLONG) Offset (MQLONG) OriginalLength (MQLONG) Persistence (MQLONG) Priority (MQLONG) PutApplType (MQLONG) Report (MQLONG) Version (MQLONG)
DECLARE propRef REFERENCE TO InputRoot.Properties; DECLARE mqmdRef REFERENCE TO InputRoot.MQMD; DECLARE inCCSID INT propRef.CodedCharSetId; DECLARE inEncoding INT propRef.Encoding; DECLARE inPriority INT mqmdRef.Priority; DECLARE inMsgSeqNumber INT mqmdRef.MsgSeqNumber; DECLARE msgBitStream BLOB ASBITSTREAM(InputRoot, inEncoding, inCCSID); INSERT INTO Database.TABLE1(MSGDATA, MSGENCODING, MSGCCSID, MSGPRIORITY,MSGSEQNUMBER) VALUES (msgBitStream, inEncoding, inCCSID, inPriority, inMsgSeqNumber);
DECLARE propRef REFERENCE TO InputRoot.Properties; DECLARE inCCSID INT propRef.CodedCharSetId; DECLARE inEncoding INT propRef.Encoding; DECLARE msgBitStream BLOB ASBITSTREAM(InputRoot.XMLNS, inEncoding, inCCSID); DECLARE msgChar CHAR CAST(msgBitStream AS CHAR CCSID inCCSID); INSERT INTO Database.TABLE1(MSGDATA, MSGENCODING, MSGCCSID) VALUES (msgChar, inEncoding, inCCSID);
Beispiele zum Extrahieren eines Nachrichtenbitstroms aus einer Datenbank, die auf den zwei vorherigen Beispielen basieren, finden Sie unter Bitstromdaten aus einer Datenbank auswählen.