Eine einzeilige Abfrage fragt höchstens eine Zeile von der Datenbank ab. Eine SELECT-Anweisung für eine einzeilige Abfrage kann eine INTO-Klausel nach der Auswahlliste und vor der FROM-Klausel enthalten. 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.
Wenn die Abfrage mehrere Zeilen zurückgibt, gibt der Datenbankserver den Fehler SQLE_TOO_MANY_RECORDS zurück.
Wenn die Abfrage keine Zeilen zurückgibt, wird die Warnung SQLE_NOTFOUND zurückgegeben.
Weitere Hinweise zu den in der SQLCA-Struktur zurückgegebenen Fehlern und Warnungen finden Sie unter SQL-Kommunikationsbereich initialisieren.
Folgendes Codefragment gibt zum Beispiel 1 zurück, wenn eine Zeile der Tabelle employee erfolgreich abgerufen wird, 0, falls die Zeile nicht vorhanden ist, und -1, falls ein Fehler auftritt.
EXEC SQL BEGIN DECLARE SECTION; long int emp_id; char name[41]; char sex; char birthdate[15]; short int ind_birthdate; EXEC SQL END DECLARE SECTION; int find_employee( long employee ) { emp_id = employee; EXEC SQL SELECT emp_fname || ' ' || emp_lname, sex, birth_date INTO :name, :sex, birthdate:ind_birthdate FROM "DBA".employee WHERE emp_id = :emp_id; if( SQLCODE == SQLE_NOTFOUND ) { return( 0 ); /* employee not found */ } else if( SQLCODE < 0 ) { return( -1 ); /* error */ } else { return( 1 ); /* found */ } } |
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 |