Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere Embedded SQL » SQL-Kommunikationsbereich (SQLCA)

 

SQLCA-Felder

Die SQLCA-Felder haben folgende Bedeutung:

  • sqlcaid   Ein 8-Byte-Zeichenfeld, das die Zeichenfolge SQLCA zur Identifizierung der SQLCA-Struktur enthält. Dieses Feld unterstützt die Fehlersuche, wenn Sie Speicherinhalte untersuchen.

  • sqlcabc   Ganzzahl, die die Länge der SQLCA-Struktur enthält (136 Bytes).

  • sqlcode   Eine Ganzzahl, die den Fehlercode angibt, wenn die Datenbank einen Fehler bei einer Anforderung feststellt. Definitionen für die Fehlercodes befinden sich in der Header-Datei sqlerr.h. Bei einer erfolgreichen Operation ist der Fehlercode 0 (Null), bei einer Warnung ist er positiv, bei einem Fehler ist er negativ.

    Eine vollständige Auflistung der Fehlercodes finden Sie unter Fehlermeldungen.

  • sqlerrml   Die Länge der Daten im Feld sqlerrmc.

  • sqlerrmc   Kann eine oder mehrere Zeichenfolgen enthalten, die in eine Fehlermeldung einzufügen sind. Einige Fehlermeldungen enthalten eine oder mehr Platzhalter-Zeichenfolgen (%1, %2, …), die durch die Zeichenfolgen in diesem Feld ersetzt werden.

    Wenn zum Beispiel ein Fehler Tabelle nicht gefunden erzeugt wird, enthält sqlerrmc den Tabellennamen, der dann an passender Stelle in die Fehlermeldung eingefügt wird.

    Eine vollständige Auflistung der Fehlermeldungen finden Sie unter Fehlermeldungen.

  • sqlerrp   Reserviert

  • sqlerrd   Array von Ganzzahlen.

  • sqlwarn   Reserviert

  • sqlstate   Der Statuswert SQLSTATE. Der ANSI SQL-Standard definiert diesen Rückgabewerttyp für SQL-Anweisungen zusätzlich zu dem SQLCODE-Wert. Der Wert von SQLSTATE ist immer eine fünf Zeichen lange mit NULL abgeschlossene Zeichenfolge, aufgeteilt in eine zwei Zeichen lange Klasse (die ersten zwei Zeichen) und eine drei Zeichen lange Unterklasse. Jedes Zeichen kann eine Ziffer von 0 bis 9 oder ein Großbuchstabe von A bis Z sein.

    Jede Klasse oder Unterklasse, die mit 0 bis 4 oder A bis H beginnt, ist durch den SQL-Standard definiert. Andere Klassen und Unterklassen sind durch die Implementierung definiert. Hat SQLSTATE den Wert '00000', ist kein Fehler und keine Warnung aufgetreten.

    Weitere SQLSTATE-Werte finden Sie unter SQL Anywhere-Fehlermeldungen - sortiert nach SQLSTATE.

sqlerror-Array

Das Array sqlerror besteht aus folgenden Elementen:

  • sqlerrd[1] (SQLIOCOUNT)   Die Anzahl der Eingabe-/Ausgabe-Vorgänge, die erforderlich waren, um eine Anweisung auszuführen.

    Der Datenbankserver setzt diese Zählung nicht für jede Anweisung auf 0 (Null). Ihr Programm kann diese Variable vor der Ausführung einer Anweisungssequenz auf 0 (Null) setzen. Nach der letzten Anweisung zeigt der Wert der Variablen die Gesamtzahl der Eingabe-/Ausgabe-Vorgänge für die gesamte Anweisungssequenz an.

  • sqlerrd[2] (SQLCOUNT)   Der Wert dieses Felds hängt davon ab, welche Anweisung ausgeführt wurde.

    • INSERT-, UPDATE-, PUT und DELETE-Anweisungen   Anzahl der Zeilen, die von der Anweisung betroffen waren.

    • OPEN-Anweisung   Bei Cursor OPEN wird das Feld belegt, entweder mit der tatsächlichen Anzahl der Zeilen im Cursor (ein Wert größer als oder gleich 0) oder mit einer Schätzung der Anzahl (ein negative Zahl, deren absoluter Wert die Schätzung ist). Es wird sich um die tatsächliche Anzahl der Zeilen handeln, wenn der Datenbankserver sie errechnen kann, ohne die Zeilen zu zählen. Die Datenbank kann auch so konfiguriert werden, dass sie immer die tatsächliche Anzahl der Zeilen liefert (mit der Option row_counts).

    • FETCH Cursor-Anweisung   Das Feld SQLCOUNT wird belegt, falls eine SQLE_NOTFOUND-Warnung zurückgegeben wird. Es enthält die Anzahl der Zeilen, um die eine FETCH RELATIVE- oder eine FETCH ABSOLUTE-Anweisung den Bereich der möglichen Cursorpositionen überschritten hat (ein Cursor kann sich auf einer Zeile, vor der ersten Zeile oder nach der letzten Zeile befinden). Bei weiten Abrufen entspricht SQLCOUNT der Anzahl der tatsächlich abgerufenen Zeilen und ist kleiner oder gleich der Anzahl der angeforderten Zeilen. Während eines weiten Abrufs wird SQLE_NOTFOUND nur gesetzt, wenn keine Zeilen zurückgegeben werden.

      Weitere Hinweise zu weiten Abrufen finden Sie unter Mehr als eine Zeile auf einmal abrufen.

      Der Wert ist 0, falls die Zeile nicht gefunden wurde, die Position aber gültig ist, z.B. wenn FETCH RELATIVE 1 ausgeführt wird, und die Position die letzte Zeile eines Cursors ist. Der Wert ist positiv, falls das Abrufen jenseits des Cursors versucht wurde, und negativ, falls das Abrufen vor dem Anfang des Cursors versucht wurde.

    • GET DATA-Anweisung   Das Feld SQLCOUNT enthält die tatsächliche Länge des Werts.

    • DESCRIBE-Anweisung   In der Klausel WITH VARIABLE RESULT, die benutzt wird, um Prozeduren zu beschreiben, die mehr als ein Ergebnis haben können, wird SQLCOUNT auf einen der folgenden Werte gesetzt:

      • 0   Die Ergebnismenge kann sich ändern: Der Prozeduraufruf sollte nach jeder OPEN-Anweisung erneut beschrieben werden.

      • 1   Die Ergebnismenge ist unveränderlich. Eine erneute Beschreibung ist nicht erforderlich.

      Wenn der Syntaxfehler SQLE_SYNTAX_ERROR auftritt, enthält dieses Feld die ungefähre Position des Zeichens innerhalb der Anweisung, in der der Fehler erkannt wurde.

  • sqlerrd[3] (SQLIOESTIMATE)   Die geschätzte Anzahl der für den Abschluss der Anweisung erforderlichen Eingabe-/Ausgabe-Vorgänge. Dieses Feld wird bei einer OPEN- oder EXPLAIN-Anweisung belegt.