Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Benutzervariablen

SQL-Anweisungen können Variablen der Wirtssprache, sogenannte Benutzervariablen, enthalten. Mit Benutzervariablen ist es möglich, Daten aus der Datenbank in das Programm der Wirtssprache zu übertragen und dort weiterzuverarbeiten und umgekehrt Daten in die Datenbank zu übertragen. In SQL-Anweisungen müssen alle Benutzervariablen mit einem vorangestellten Doppelpunkt gekennzeichnet sein. Benutzervariablen und Spalten können denselben Namen haben.

Benutzervariablen müssen vor ihrer Verwendung innerhalb einer DECLARE SECTION definiert werden. Eine DECLARE SECTION beginnt in ESQL-COBOL mit „EXEC SQL BEGIN DECLARE SECTION END-EXEC“ und endet mit „EXEC SQL END DECLARE SECTION END-EXEC“. Ein ESQL-Programm kann beliebig viele DECLARE SECTIONs enthalten.

DECLARE SECTIONs dürfen nur an Stellen stehen, an denen Variablendeklarationen in der Programmiersprache erlaubt sind. Wird eine Benutzervariable in einer ausführbaren SQL-Anweisung verwendet, so muss nach den Regeln der Wirtssprache eine Referenz auf die Deklaration an dieser Stelle erlaubt sein.

Bei der Definition der Benutzervariablen muss auf die Verträglichkeit von Datentypen der Wirtssprache und SQL-Datentypen geachtet werden. Auf die Datentyp-Verträglichkeit ist nicht nur bei der Übertragung von Werten in die Datenbank oder von der Datenbank zu achten, sondern auch bei der Verwendung von Benutzervariablen in Ausdrücken.

Indikatorvariablen

Indikatorvariablen sind Benutzervariablen, mit denen geprüft werden kann, ob bei der Übertragung eines alphanumerischen Werts oder eines National-Werts in eine Benutzervariable Informationsverlust aufgetreten ist und ob eine Spalte den NULL-Wert enthält. Indikatorvariablen dienen auch dazu, NULL-Werte in die Datenbank zu übertragen.

Wenn ein alphanumerischer Wert oder ein National-Wert ungekürzt in eine Benutzervariable übertragen wurde, dann hat die Indikatorvariable den Inhalt „0“. War die Länge des zu übertragenden Werts größer als die Länge der Benutzervariable, dann enthält die Indikatorvariable die tatsächliche Länge des zu übertragenden Werts.

Soll der NULL-Wert aus der Datenbank in eine Benutzervariable übertragen werden, dann erhält die Indikatorvariable den Wert „-1“ und die Benutzervariable bleibt ungeändert. Soll der NULL-Wert aus einer Benutzervariablen in die Datenbank übertragen werden, dann muss die zugehörige Indikatorvariable mit einem negativen Wert belegt werden.

Eine Indikatorvariable wird einer Benutzervariablen in einer SQL-Anweisung zugeordnet, indem die Indikatorvariable direkt hinter der Benutzervariablen, wahlweise mit dem Schlüsselwort INDICATOR versehen, angegeben wird.

Indikatorvariablen können angegeben werden

  • in der RETURN INTO- oder VALUES-Klausel der INSERT-Anweisung

  • in der VALUES-Klausel der MERGE-Anweisung

  • in der INTO-Klausel der SELECT- oder der FETCH-Anweisung

  • in der SET-Klausel von UPDATE- oder MERGE-Anweisungen

  • in der USING- und INTO-Klausel der EXECUTE-Anweisung

  • in der USING-Klausel der OPEN-Anweisung

  • in Ausdrücken, z.B. in DELETE- oder DECLARE CURSOR-Anweisungen.