In diesem Abschnitt wird die implizite Umsetzung von Datenbankdatentypen in ESQL-Datentypen erläutert.
Der ESQL-Datentyp von Nachrichtenfeldern hängt vom Typ der Nachricht (z. B. XML) und vom Parser ab, der für deren Syntaxanalyse verwendet wird. Der ESQL-Datentyp des Werts, der von einem Datenbankspaltenverweis zurückgegeben wird, hängt vom Datentyp der Spalte in der Datenbank ab.
In der folgenden Tabelle ist dargestellt, wie die verschiedenen integrierten Datenbankdatentypen in ESQL-Datentypen umgesetzt werden, wenn von Nachrichtenflüssen in einem Broker darauf zugegriffen wird.
Die Versionen, die für die in dieser Liste aufgeführten Datenbankprodukte unterstützt werden, sind in Unterstützte Datenbanken aufgelistet.
DB2 | SQL Server und Sybase | Oracle | Informix | ESQL-Datentyp |
---|---|---|---|---|
Nicht gültig | BIT | Nicht gültig | Nicht gültig | BOOLEAN |
SMALLINT, INTEGER, BIGINT | INT, SMALLINT, TINYINT | Nicht gültig | INT, SMALLINT | INTEGER |
REAL, DOUBLE | FLOAT, REAL | NUMBER()1 | FLOAT, SMALLFLOAT, DOUBLE | FLOAT |
DECIMAL | DECIMAL, NUMERIC, MONEY, SMALLMONEY | NUMBER(P)1, NUMBER(P,S)1 | DECIMAL, MONEY | DECIMAL |
CHAR, VARCHAR, CLOB, GRAPHIC, VARGRAPHIC, LONGVARGRAPHIC, DBCLOB | CHAR, VARCHAR, TEXT | CHAR, VARCHAR2, ROWID, UROWID, LONG, CLOB | CHAR, VARCHAR, CHAR VARYING | CHARACTER |
TIME | Nicht gültig | Nicht gültig | Nicht gültig | TIME |
Nicht gültig | Nicht gültig | Nicht gültig | Nicht gültig | GMTTIME |
DATE | Nicht gültig | Nicht gültig | DATE | DATE |
TIMESTAMP | DATETIME, SMALLDATETIME, TIMESTAMP | DATE | DATETIME | TIMESTAMP |
Nicht gültig | Nicht gültig | Nicht gültig | Nicht gültig | GMTTIMESTAMP |
Nicht gültig | Nicht gültig | Nicht gültig | INTERVAL | INTERVAL |
BLOB | BINARY, VARBINARY, IMAGE, UNIQUEIDENTIFIER | RAW LONG, RAW BLOB | Nicht gültig | BLOB |
Nicht gültig | Nicht gültig | Nicht gültig | Nicht gültig | BIT |
XML | Nicht gültig | CHAR | Nicht gültig | BLOB |
In der Tabelle sind alle für die einzelnen Datenbanken unterstützten Datentypen aufgeführt.
SET OutputRoot.xxx[]
= (SELECT T.department FROM Database.personnel AS T);
wobei Database.personnel zu einer TINYINT-Spalte in einer SQL Server-Datenbanktabelle aufgelöst wird, eine Liste mit ESQL-Werten vom Typ INTEGER, die OutputRoot.xxx zugeordnet werden.
Im Gegensatz dazu ergibt eine identische Abfrage, bei der Database.personnel zu einer NUMBER()-Spalte in einer Oracle-Datenbank aufgelöst wird, eine Liste mit ESQL-Werten vom Typ FLOAT, die OutputRoot.xxx zugeordnet werden.
Beachten Sie, dass für die Umsetzung der Datentypen von Parametern gespeicherter Prozeduren die Definition der betreffenden externen Prozedur in der CREATE PROCEDURE-Anweisung verwendet wird.