DESCRIBE schreibt Datentypbeschreibungen von Eingabe- bzw. Ausgabewerten einer dynamisch formulierten Anweisung bzw. Cursorbeschreibung in einen SQL-Deskriptorbereich..
Der SQL-Deskriptorbereich muss vorher mit ALLOCATE DESCRIPTOR angelegt worden sein.
Die dynamisch formulierte Anweisung bzw. Cursorbeschreibung muss vor Ausführung der DESCRIBE-Anweisung mit PREPARE vorbereitet worden sein.
DESCRIBE [INPUT | OUTPUT]
anweisungsbezeichner USING SQL DESCRIPTOR GLOBAL
deskriptor
INPUT
Anzahl von Eingabewerten einer dynamisch formulierten Anweisung bzw. Cursorbeschreibung bestimmen und Datentyp der Eingabewerte beschreiben.
OUTPUT
Anzahl von Ausgabewerten einer dynamisch formulierten SELECT-Anweisung bzw. Cursorbeschreibung bestimmen und Datentyp der Ausgabewerte beschreiben.
anweisungsbezeichner
Dynamisch formulierte Anweisung bzw. Cursorbeschreibung.
deskriptor
Name des SQL-Deskriptorbereichs, in den die Typbeschreibungen geschrieben werden (siehe „Belegung der Deskriptorbereichsfelder").
Sie können den Namen als alphanumerisches Literal oder mit einer alphanumerischen Benutzervariable angeben.
Diesen SQL-Deskriptorbereich können Sie nicht verwenden, wenn ein geöffneter Cursor mit eingeschaltetem Schubmodus existiert (siehe Abschnitt „Pragma PREFETCH" ), und für diesen Cursor eine Anweisung FETCH NEXT... ausgeführt wurde, deren INTO-Klausel den Namen desselben SQL-Deskriptorbereichs enthält.
Belegung der Deskriptorbereichsfelder
Die Felder des SQL-Deskriptorbereichs werden wie folgt belegt:
Das Feld COUNT wird mit der Anzahl der Eingabewerte (DESCRIBE INPUT) bzw. Ausgabewerte (DESCRIBE OUTPUT) belegt.
Bei DESCRIBE INPUT berechnet sich die Anzahl wie folgt aus der Anzahl der Platzhalter der dynamisch formulierten Anweisung bzw. Cursorbeschreibung:
Anzahl der Platzhalter für einfache Werte +
Anzahl der Aggregatselemente von jedem Platzhalter für Aggregate
Bei DESCRIBE OUTPUT berechnet sich die Anzahl wie folgt aus der Anzahl der Ergebnisspalten der dynamisch formulierten SELECT-Anweisung bzw. Cursorbeschreibung:
Anzahl der einfachen Ergebnisspalten +
Anzahl der Spaltenelemente von jeder multiplen Ergebnisspalte
Ist die berechnete Anzahl 0, werden keine weiteren Deskriptorbereichsfelder gesetzt.
Ist die Anzahl größer als die bei ALLOCATE DESCRIPTOR angegebene Maximalanzahl der Einträge, werden keine weiteren Felder gesetzt und ein entsprechender SQLSTATE gesetzt.
Ansonsten werden folgende Felder des SQL-Deskriptorbereichs belegt.
Für jeden Eingabewert bei DESCRIBE INPUT:
TYPE
LENGTH (bei alphanumerischem Datentyp, National-Datentyp und Zeit-Datentyp)
PRECISION (bei numerischem Datentyp sowie bei TIME und TIMESTAMP)
SCALE (bei NUMERIC, DECIMAL, INTEGER und SMALLINT)
DATETIME_INTERVAL_CODE (bei Zeit-Datentyp)
OCTET_LENGTH
NULLABLE mit dem Wert 1
REPETITIONS
UNNAMED mit dem Wert 1
Für jeden Ausgabewert bei DESCRIBE OUTPUT:
TYPE
LENGTH (bei alphanumerischem Datentyp, National-Datentyp und Zeit-Datentyp)
PRECISION (bei numerischem Datentyp sowie bei TIME und TIMESTAMP)
SCALE (bei NUMERIC, DECIMAL, INTEGER und SMALLINT)
DATETIME_INTERVAL_CODE (bei Zeit-Datentyp)
OCTET_LENGTH
NULLABLE
REPETITIONS
NAME
UNNAMED
Mit welchen Werten die angegebenen Felder belegt werden, ist im Abschnitt „Deskriptorbereichsfelder" beschrieben.
Alle anderen Felder des SQL-Deskriptorbereichs sind undefiniert.
Beispiel
DESCRIBE OUTPUT cur_beschreibung
USING SQL DESCRIPTOR GLOBAL 'DESKR_BEREICH'
Siehe auch
ALLOCATE DESCRIPTOR, DEALLOCATE DESCRIPTOR, GET DESCRIPTOR, SET DESCRIPTOR