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) » UltraLite - C- und C++-Programmierung » Anwendungsentwicklung » Anwendungen mit Embedded SQL entwickeln » Hostvariable verwenden » Verwendung von Indikatorvariablen

 

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

Indikatorvariable verwenden, um NULL einzufügen

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