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 » Hostvariable verwenden » Indikatorvariable

 

Indikatorvariable für die Behandlung von NULL verwenden

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.

Indikatorvariable verwenden, um NULL einzufügen

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 verwenden, um NULL abzurufen

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).