Das SQL-Konzept von NULL darf nicht mit der C-Sprachkonstanten mit demselben Namen verwechselt werden. In der SQL-Sprache repräsentiert NULL entweder ein unbekanntes Attribut oder eine ungeeignete Information. Die C-Sprachkonstante steht für einen Zeigerwert, der nicht auf eine Speicherposition zeigt.
Wenn NULL in der Dokumentation von SQL Anywhere verwendet wird, ist die oben genannte Bedeutung der SQL-Datenbank gemeint. Die gleichnamige C-Konstante wird dagegen als Null-Zeiger bezeichnet (Kleinschreibung).
NULL ist nicht dasselbe wie ein beliebiger anderer Wert des für die Spalte festgelegten Typs. Um NULL an die Datenbank zu übergeben oder von ihr abzurufen, benötigen Sie eine andere Struktur als eine gewöhnliche Hostvariable. Hierzu setzen Sie die Indikatorvariable ein.
Eine INSERT-Anweisung kann eine Indikatorvariable wie folgt einbeziehen:
EXEC SQL BEGIN DECLARE SECTION; short int employee_number; char employee_name[50]; char employee_initials[6]; char employee_phone[15]; short int ind_phone; EXEC SQL END DECLARE SECTION; /* set values of empnum, empname, initials, and homephone */ if( /* phone number is known */ ) { ind_phone = 0; } else { ind_phone = -1; /* NULL */ } EXEC SQL INSERT INTO Employee VALUES (:employee_number, :employee_name, :employee_initials, :employee_phone:ind_phone ); |
Hat die Indikatorvariable den Wert –1, wird NULL eingefügt. Hat sie den Wert 0, wird der tatsächliche Wert von employee_phone eingefügt.
Indikatorvariable werden auch benutzt, um Daten von der Datenbank abzurufen. Sie zeigen an, dass der Wert NULL abgerufen wurde (Indikator ist negativ). Wenn der Wert NULL aus der Datenbank abgerufen wurde und keine Indikatorvariable verwendet wird, wird der Fehler SQLE_NO_INDICATOR generiert.
Weitere Hinweise zu den in der SQLCA-Struktur zurückgegebenen Fehlern und Warnungen finden Sie unter SQL-Kommunikationsbereich initialisieren.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |