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. Daher wird ein zusätzliches Element neben den regulären Hostvariablen benötigt, um NULL-Werte an die Datenbank zu übergeben oder NULL-Ergebnisse zurückzuerhalten. Für diesen Zweck werden Indikatorvariable eingesetzt.
Eine INSERT-Anweisung könnte wie folgt eine Indikatorvariable einfügen:
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; /* This program fills in the employee number, name, initials, and phone number. */ if( /* Phone number is unknown */ ) { ind_phone = -1; } else { ind_phone = 0; } EXEC SQL INSERT INTO Employees 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). Falls NULL von der Datenbank abgerufen wird und keine Indikatorvariable zur Verfügung steht, wird ein Fehler erzeugt (SQLE_NO_INDICATOR).
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 |