Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Werte

Werte können in SQL-Anweisungen angegeben werden, um Spaltenwerte einzutragen oder zu ändern. Sie können in Ausdrücken durch Operatoren verknüpft und in Vergleichen verwendet werden. Sie können in Routinen auch als Parameter und lokale Variablen verwendet werden. Werte können als Literale direkt angegeben oder in Benutzervariablen (siehe "Benutzervariablen") übergeben werden. In dynamisch übersetzbaren Anweisungen (siehe "Dynamische SQL") kann das Zeichen „?“ als Platzhalter für einen Wert stehen. Jeder Wert hat einen Datentyp.

SESAM/SQL unterscheidet zwischen NULL-Werten und Nicht-NULL-Werten. Entsprechend den Datentypen unterscheidet man bei den Nicht-NULL-Werten zwischen Zeichenketten (alphanumerischen Werten und National-Werten), numerischen Werten und Zeitwerten.

Für jede dieser Gruppen gibt es entsprechende Formate, um Literale anzugeben.

REF-Werte, die im Zusammenhang mit BLOB (Binary Large Object) auftauchen, sind keine Werte im herkömmlichen Sinn. Sie dienen der Referenzierung von sogenannten BLOB-Objekten in Basistabellen. Die Definition von REF-Werten in Basistabellen wird im Abschnitt „Spalte“ beschrieben. Die Struktur und Bearbeitung der BLOB-Objekte ist im Abschnitt „BLOB-Konstrukte“ erklärt.

NULL-Werte

Um fehlende Werte von Werten zu unterscheiden, gibt es NULL-Werte. Der Begriff NULL-Wert stellt keinen bestimmten Wert dar, sondern bezeichnet den Sachverhalt „Wert unbekannt“ oder „irrelevant“. Insbesondere darf der NULL-Wert nicht als Leerzeichen oder als die Ziffer 0 interpretiert werden.

Das Schlüsselwort NULL kann als Literal für den NULL-Wert betrachtet werden. Es kann z.B. beim Einfügen (INSERT), Einfügen/Ändern (MERGE) und Ändern (UPDATE) angegeben werden, um für einen Spaltenwert den NULL-Wert einzutragen. Innerhalb einer Spaltendefinition kann auch mit der Klausel DEFAULT NULL der NULL-Wert als Defaultwert festgelegt werden.

Wird bei der Spaltendefinition NOT NULL oder PRIMARY KEY für eine Spalte angegeben, dann können nur Nicht-NULL-Werte in dieser Spalte enthalten sein. Ist keine NOT NULL- oder PRIMARY KEY-Bedingung und kein Defaultwert (siehe "Spalte") ungleich NULL definiert, dann trägt SESAM/SQL automatisch den NULL-Wert ein, wenn beim Einfügen eines Satzes für eine Spalte kein Wert angegeben wird.

Ein NULL-Wert in Bedingungen ergibt, abhängig von der Art der Verknüpfung (siehe "Suchbedingung"), in den meisten Fällen als Ergebnis den Wahrheitswert unbestimmt. Eine Ausnahme ist das Prädikat spalte IS [NOT] NULL, das nur die Wahrheitswerte wahr oder falsch ergibt.

Werte für multiple Spalten

Ein Wert für einen Bereich von Spaltenelementen einer multiplen Spalte wird mit einem wert angegeben, der eine Benutzervariable für einen Vektor, ein Platzhalter der Form „?“ oder ein Aggregat ist. Ein Aggregat wird in der folgenden Form angegeben:

<wert1,wert2, ...>

wert1, wert2, ... sind hierbei die Werte für die Ausprägungen der multiplen Spalte.

Zeichenketten

Zeichenketten sind eine Folge von beliebigen Zeichen in EBCDIC oder Unicode. EBCDIC-Zeichenketten werden als „alphanumerische Werte“, Unicode-Zeichenketten als „NationalWerte“ bezeichnet.

In SESAM/SQL werden alphanumerische Literale, National-Literale und Spezial-Literale zur Darstellung von Zeichenketten verwendet.

Alphanumerische Werte

Alphanumerische Literale werden in der Form '[zeichen... ]' bzw. X'[hex hex... ]' angegeben und können jedes beliebige EBCDIC-Zeichen enthalten. Ein Hochkomma innerhalb eines alphanumerischen Literals muss verdoppelt werden; das verdoppelte Hochkomma gilt als ein Zeichen. Der Datentyp ist CHAR (n), wobei n die Anzahl der Zeichen ist.

Neben der Angabe von alphanumerischen Literalen gibt es die Möglichkeit, alphanumerische Werte über Spezial-Literale anzugeben. Z.B. liefert SYSTEM_USER den Namen des aktuellen Systembenutzers.

Für alphanumerische Werte gibt es den Operator ||. Er verbindet zwei Zeichenketten zu einer Zeichenkette (Konkatenation). Bei der Konkatenation von Zeichenketten müssen entweder beide Operanden alphanumerisch (CHAR oder VARCHAR) oder beide vom National-Typ (NCHAR oder NVARCHAR) sein.

Ein alphanumerisches Literal kann sich auch aus Teilketten zusammensetzen, die jeweils in einer Zeile stehen:

'teilkette_1'
'teilkette_2'
...
'teilkette_n'

Dies entspricht dem alphanumerischen Literal

'teilkette_1'||'teilkette_2'|| ... ||'teilkette_n'

Kommentare und Leerzeichen zwischen den Teilketten sind erlaubt.

National-Werte

National-Literale werden in der Form N'[zeichen... ]', NX'[4hex... ]' oder
U&'[zeichen ...esc+4hex...zeichen...] angegeben.

N-Literale können Unicode-Zeichen enthalten, die auch im codierten Zeichensatz EDF03IRV enthalten sind. Ein Hochkomma innerhalb eines National-Literals muss verdoppelt werden; das verdoppelte Hochkomma gilt als ein Zeichen. Der Datentyp ist NCHAR (cu_länge), wobei cu_länge die Anzahl der Code Units ist (1 Code Unit in UTF-16 = 2 Byte).

NX-Literale enthalten nur Unicode-Zeichen in sedezimaler Darstellung.

U&-Literale enthalten sowohl Unicode-Zeichen aus dem codierten Zeichensatz EDF03IRV als auch Unicode-Zeichen in sedezimaler Darstellung, die mit einem vorangestellten Entwertungszeichen gekennzeichnet werden, U&'[esc 4hex...]' bzw. U&'[esc+6hex...]'. Das Literal kann beliebig viele sedezimale Zeichen an beliebigen Stellen enthalten, jedes einzelne Zeichen muss aber entwertet werden.

Für National-Werte gibt es den Operator ||, der zwei Zeichenketten zu einer Zeichenkette verbindet (Konkatenation). Bei der Konkatenation von Zeichenketten müssen entweder beide Operanden alphanumerisch (CHAR oder VARCHAR) oder beide vom National-Datentyp (NCHAR oder NVARCHAR) sein.

Ein National-Literal kann sich auch aus Teilketten zusammensetzen, die jeweils in einer Zeile stehen:

N'teilkette_1'
'teilkette_2'
...
'teilkette_n'

Dies entspricht dem National-Literal

N'teilkette_1'||N'teilkette_2'|| ... ||N'teilkette_n'

Spezial-Literale

Spezial-Literale werden zur Ablaufzeit in die entsprechenden Werte ihrer Ablaufumgebung umgewandelt:

Spezial-Literal

Bedeutung

CURRENT_CATALOG

Name der voreingestellten Datenbank

CURRENT_ISOLATION_LEVEL

Isolationslevel der aktuellen Transaktion

CURRENT_REFERENCED_CATALOG

Name der Datenbank, auf die sich die aktuelle
Anweisung bezieht

CURRENT_SCHEMA

Name des voreingestellten Schemas

[CURRENT_ ]USER

Name des aktuellen Berechtigungsschlüssels

SYSTEM_USER

Name des aktuellen Systembenutzers

Tabelle 31: Spezial-Literale

Numerische Werte

Numerische Werte sind Ganzzahlen, Festpunktzahlen oder Gleitpunktzahlen.

Zeitwerte

SESAM/SQL unterscheidet die Zeitwerte

  • Datum (DATE'jahr-monat-tag')

  • Uhrzeit (TIME'stunde:minute:sekunde.sekundenbruchteil')

  • Zeitstempel (TIMESTAMP'jahr-monat-tag stunde:minute:sekunde.sekundenbruchteil').

Als Zeitwerte können auch die Zeitfunktionen (siehe "Zeitfunktionen") CURRENT_DATE, CURRENT_TIME(3), LOCALTIME(3), CURRENT_TIMESTAMP(3) und LOCALTIMESTAMP(3) angegeben werden. Sie liefern das aktuelle Datum und/oder die aktuelle Uhrzeit.

Für sekunde kann eine Zahl zwischen 00 und 61 angegeben werden. Die Zahlen nach dem Punkt geben die dreistelligen Sekundenbruchteile an.

Zeitwerte können in Spalten vom entsprechenden Datentyp eingetragen werden. Zeitwerte werden verwendet

  • in den Zeitfunktionen CURRENT_DATE, CURRENT_TIME(3), LOCALTIME(3), CURRENT_TIMESTAMP(3) und LOCALTIMESTAMP(3)

  • in den Mengenfunktionen COUNT, MAX und MIN

  • in den numerischen Funktionen EXTRACT und JULIAN_DAY_OF_DATE

  • in Vergleichen mit einem anderen Zeitwert des gleichen Datentyps.