Die Systemvariable '
sqlData' ist ein strukturierter Datensatz, der eine Reihe von global verfügbaren Feldern enthält. Der Datensatz
hat die folgende Struktur:
record sqlData type basicRecord
10 sqlca hex(272);
20 * hex(24);
20 sqlcode int;
20 * hex(4);
20 sqlerrmc char(70);
20 * hex(16);
20 sqlerrd int[6];
20 sqlwarn char(1)[11];
20 sqlstate char(5);
end
Dieselben Variablen befinden sich auch an ihrer vorherigen Position in der Bibliothek 'sysVar'. Der Gültigkeitsbereich der
Variablen in 'sysVar' ist jedoch auf das aktuelle Programm begrenzt. Beispiel: Wenn 'Programm B' von 'Programm A'
aufgerufen wird und beide Programme auf eine relationale Datenbank
zugreifen, verfügt jedes Programm über eine eigene Kopie von 'sysVar.sqlData'. Die in 'Programm B'
gesetzten Werte sind nach Rückkehr zu
'Programm A' nicht mehr verfügbar. Aus diesem Grund müssen Sie den Namen jeder dieser Variablen, die Sie verwenden, vollständig qualifizieren. Beispiel:
sqlLib.sqlData.sqlcode.
Der Datensatz enthält die folgenden Einzelfelder:
- sqlcode
- Enthält einen Statuscode, nachdem Ihr Programm auf eine relationale Datenbank zugegriffen hat.
- sqlerrmc
- Die zu 'sqlcode' zugeordnete Fehlernachricht.
- sqlerrd
- Diese sechs Variablen des Typs INT stellen die folgenden Diagnoseinformationen bereit:
- sqlerrd[1]
- Wenn die SQL-Verbindung erfolgreich aufgerufen wird, enthält diese Variable die maximale erwartete Differenz bei der Länge gemischter
Zeichendaten (CHAR-Datentypen), wenn eine Konvertierung aus der Anwendungscodepage in die Datenbankcodepage erfolgt. Der Wert 0 oder 1 weist darauf hin, dass keine Verlängerung
auftritt. Ein Wert größer als 1 gibt an, dass eine Verlängerung möglich ist. Ein negativer Wert gibt eine
mögliche Verkürzung der Zeichenfolge an. Bei einer erfolgreichen Rückkehr von einer SQL-Prozedur enthält die Variable den Rückgabestatuswert von der
SQL-Prozedur.
- sqlerrd[2]
- Wenn die SQL-Verbindung erfolgreich aufgerufen wird, enthält diese Variable die maximale erwartete Differenz bei der Länge gemischter
Zeichendaten (CHAR-Datentypen), wenn eine Konvertierung aus der Datenbankcodepage in die Anwendungscodepage erfolgt. Der Wert 0 oder 1 weist darauf hin, dass keine Verlängerung
auftritt. Ein Wert größer als 1 gibt an, dass eine Verlängerung möglich ist. Ein negativer Wert gibt eine
mögliche Verkürzung der Zeichenfolge an. Wenn der SQL-Kommunikationsbereich (SQLCA) aus einer nicht ganzheitlichen (NOT ATOMIC)
Compound-SQL-Anweisung resultiert, die einen oder mehrere Fehler festgestellt hat, wird der Wert auf die Anzahl der Anweisungen gesetzt, die fehlgeschlagen
sind.
- sqlerrd[3]
- Wenn PREPARE erfolgreich aufgerufen wird, enthält dieses Feld (bzw. dieses Element in der Feldgruppe) eine
Schätzung der Anzahl der zurückgegebenen Zeilen.
Nach INSERT, UPDATE, DELETE oder MERGE ist die tatsächliche Anzahl der Zeilen enthalten, die für die Operation qualifiziert sind. Wird eine
Compound-SQL-Anweisung aufgerufen, enthält sie die Summe aller Zeilen in Unteranweisungen. Wird CONNECT
aufgerufen, ist der Wert 1 enthalten, wenn die Datenbank aktualisiert werden kann, bzw. der Wert 2, wenn die Datenbank schreibgeschützt ist.
- Wenn die Anweisung OPEN aufgerufen wird und der Cursor SQL-Datenänderungsanweisungen enthält, dann enthält dieses Feld die Summer der Zeilen, die für die
eingebetteten Operationen für Einfügen (INSERT), Aktualisieren (UPDATE), Löschen (DELETE) oder Mischen (MERGE) qualifiziert sind.
- Wenn CREATE PROCEDURE für eine SQL-Prozedur aufgerufen wird und bei der Syntaxanalyse des SQL-Prozedurhauptteils ein Fehler festgestellt wird, ist die
Nummer der Zeile enthalten, in der der Fehler auftrat. Das sechste Byte von SQLCA muss 'L' sein, damit diese Zeilennummer gültig ist.
- sqlerrd[4]
- Wenn PREPARE erfolgreich aufgerufen wird, enthält dieses Feld eine relative Kostenschätzung im Hinblick auf die Ressourcen, die für die
Verarbeitung der Anweisung erforderlich sind.
Wird eine
Compound-SQL-Anweisung aufgerufen, ist die Anzahl der erfolgreichen erfolgreichen Unteranweisungen enthalten. Wird CONNECT aufgerufen, ist einer der folgenden
Codes enthalten:
- 0 für ein einphasiges Commit von einem zurückgestuften Client.
- 1 für ein einphasiges Commit.
- 2 für ein einphasiges, schreibgeschütztes Commit.
- 3 für ein zweiphasiges Commit.
- sqlerrd[5]
- Enthält die Gesamtzahl der gelöschten, eingefügten oder aktualisierten Zeilen als Ergebnis der beiden folgenden Aktionen:
- Der Umsetzung von Integritätsbedingungen nach einer erfolgreichen Löschoperation.
- Der Verarbeitung ausgelöster SQL-Anweisungen über einen aktivierten Trigger.
Wenn eine Compound-SQL-Anweisung
aufgerufen wird, enthält dieses Feld (bzw. dieses Element in der Feldgruppe) die Summe solcher Zeilen für alle Unteranweisungen. Wenn ein Fehler festgestellt wird, enthält dieses
Feld in einigen Fällen einen negativen Wert, der einen Zeiger für einen internen Fehler darstellt.
- Wird CONNECT aufgerufen, enthält 'sqlerrd[5]' einen der folgenden Werte für den Authentifizierungstyp:
- 0
- Serverauthentifizierung
- 1
- Clientauthentifizierung
- 2
- Authentifizierung mithilfe von DB2
Connect
- 4
- SERVER_ENCRYPT-Authentifizierung
- 5
- Authentifizierung mithilfe von DB2
Connect mit Verschlüsselung
- 7
- KERBEROS-Authentifizierung
- 8
- KRB_SERVER_ENCRYPT-Authentifizierung
- 9
- GSSPLUGIN-Authentifizierung
- 10
- GSS_SERVER_ENCRYPT-Authentifizierung
- 255
- Nicht angegebene Authentifizierung
- sqlerrd[6]
- Bei einer partitionierten Datenbank ist die Nummer der Partition enthalten, in der der Fehler oder die Warnung festgestellt wurde. Wurden keine Fehler oder
Warnungen festgestellt, enthält dieses Feld die Partitionsnummer des Koordinatorknotens. Die Nummer in diesem Feld ist mit der Nummer identisch, die für die
Partition in der Datei 'db2nodes.cfg' angegeben wurde.
- sqlwarn
- Eine Gruppe aus 11 Warnungsanzeigern. Wird eine
Compound-SQL-Anweisung aufgerufen, enthält jeder Anzeiger eine Summierung der für alle Unteranweisungen gesetzten Warnungsanzeiger. Diese Feldgruppe enthält die
folgenden Anzeiger:
- sqlwarn[1]
- Enthält einen der folgenden Werte:
- [leer]
- Alle anderen Anzeiger sind leer.
- W
- Mindestens ein weiterer Anzeiger ist nicht leer.
- sqlwarn[2]
- Enthält einen der folgenden Werte:
- A
- Die Anweisung CONNECT oder ATTACH war erfolgreich, und der Autorisierungsname für die Verbindung ist
länger als 8 Byte.
- N
- Das Nullabschlusszeichen wurde abgeschnitten.
- P
- Die in 'sqlerrd[4]' gespeicherte relative Kostenschätzung für die Anweisung PREPARE hat entweder den Wert überschritten, der in einer ganzen Zahl (INTEGER)
gespeichert werden kann, oder war kleiner als 1, und entweder das Sonderregister CURRENT EXPLAIN MODE oder CURRENT EXPLAIN SNAPSHOT ist auf einen anderen
Wert als NO gesetzt.
- W
- Der Wert einer Zeichenfolgespalte wurde bei der Zuordnung zu einer Hostvariablen abgeschnitten.
- sqlwarn[3]
- Enthält den Wert W, wenn Nullwerte aus dem Argument einer Funktion entfernt wurden. Der Wert W ist auch dann enthalten, wenn die letzte
SQL-E/A-Operation den Datenbankmanager veranlasst hat, Zeichendatenfelder aufgrund von Speichermangel in den Hostvariablen für das Programm abzuschneiden. Mit
logischen Ausdrücken können Sie testen, ob die Werte bestimmter Hostvariablen
abgeschnitten wurden.
Weitere Informationen finden Sie in den Referenzen auf 'trunc' im Abschnitt 'Logische Ausdrücke für
SQL-Datensätze'.
- Wenn die Hostvariable eine Zahl ist, wird bei einer Abschneidung keine Warnung ausgegeben.
Bruchteile einer Zahl werden ohne Meldung
abgeschnitten. Wenn Sie eine DB2-Datenbank verwenden, gibt der Datenbankmanager '-304' in
'sqlcode' zurück, wenn der ganzzahlige Teil einer Zahl (nicht der Bruchteil) von der Größe her nicht in eine Benutzervariable passt.
- sqlwarn[4]
- Enthält einen der folgenden Werte:
- W
- Die Anzahl der Spalten ist ungleich der Anzahl der Hostvariablen.
- Z
- Die Anzahl der in der Anweisung ASSOCIATE LOCATORS angegebenen Zeigerwerte für Ergebnismengen ist kleiner als die Anzahl der von einer Prozedur zurückgegebenen
Ergebnismengen.
- sqlwarn[5]
- Enthält den Wert W, wenn eine vorbereitete Anweisung UPDATE oder
DELETE keine WHERE-Klausel enthält.
- sqlwarn[6]
- Für zukünftige Verwendung reserviert.
- sqlwarn[7]
- Enthält den Wert W, wenn das Ergebnis einer Datumsberechnung zwecks Vermeidung eines nicht möglichen Datums
angepasst wurde.
- sqlwarn[8]
- Wenn CONNECT erfolgreich aufgerufen wird, ist der Wert E enthalten, wenn der Datenbankkonfigurationsparameter DYN_QUERY_MGMT aktiviert
ist. Wenn Sie eine DB2-Datenbank verwenden, enthält dieses Feld (oder dieses Element in der Feldgruppe) den Wert W,
wenn eine Anpassung vorgenommen wurde, um ein ungültiges Ergebnis einer Rechenoperation für Datums- oder Zeitwerte zu korrigieren.
- sqlwarn[9]
- Enthält den Wert W, wenn ein Zeichen, das nicht konvertiert werden konnte, durch ein Substitutionszeichen ersetzt wurde.
- sqlwarn[10]
- Enthält den Wert W, wenn arithmetische Ausdrücke mit Fehlern während der Verarbeitung von Spaltenfunktionen ignoriert wurden.
- sqlwarn[11]
- Enthält den Wert W, wenn ein Konvertierungsfehler bei der Konvertierung eines Zeichendatenwerts in einem der Felder im SQL-Kommunikationsbereich auftrat.
- sqlstate
- Ein Rückgabecode, der das Ergebnis der jüngsten SQL-Anweisung angibt.
Wert übergreifend für Anweisung 'converse' im Segmentmodus speichern?
NEIN