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 » Daten abrufen

 

SELECT-Anweisungen, die höchstens eine Zeile zurückgeben

Eine einzeilige Abfrage fragt höchstens eine Zeile von der Datenbank ab. In einer SELECT-Anweisung für eine einzeilige Abfrage befindet sich eine INTO-Klausel nach der Auswahlliste und vor der FROM-Klausel. Die INTO-Klausel enthält eine Liste der Hostvariable, um den Wert der einzelnen Elemente der Auswahlliste zu empfangen. Die Anzahl der Hostvariable muss mit der Anzahl der Auswahllisten-Elemente übereinstimmen. Die Hostvariable können von Indikatorvariablen gefolgt sein, um NULL-Ergebnisse anzuzeigen.

Sobald die SELECT-Anweisung ausgeführt wird, ruft der Datenbankserver die Ergebnisse ab und schreibt sie in die Hostvariable. Falls die Abfrageergebnisse mehr als eine Zeile enthalten, gibt der Datenbankserver einen Fehler zurück.

Falls das Abfrageergebnis ist, dass keine Zeile ausgewählt ist, wird eine Zeile nicht gefunden-Warnung zurückgegeben. Fehler und Warnungen werden in der SQLCA-Struktur zurückgegeben. Weitere Hinweise finden Sie unter SQL-Kommunikationsbereich (SQLCA).

Beispiel

Das folgende Codefragment gibt zum Beispiel 1 zurück, falls eine Zeile der Tabelle Employees erfolgreich abgerufen wird, 0, falls die Zeile nicht existiert, und -1, falls ein Fehler auftritt.

EXEC SQL BEGIN DECLARE SECTION;
long   ID;
char   name[41];
char   Sex;
char   birthdate[15];
short int ind_birthdate;
EXEC SQL END DECLARE SECTION;
...
int find_employee( long Employees )
{
  ID = Employees;
  EXEC SQL SELECT GivenName ||
    ' ' || Surname, Sex, BirthDate
    INTO :name, :Sex,
      :birthdate:ind_birthdate
    FROM Employees
    WHERE EmployeeID = :ID;
  if( SQLCODE == SQLE_NOTFOUND ) 
  {
    return( 0 ); /* Employees not found */
  } 
  else if( SQLCODE < 0 ) 
  {
    return( -1 ); /* error */
  } 
  else 
  {
    return( 1 ); /* found */
  }
}