「シングル・ロー・クエリ」がデータベースから取り出すローの数は多くても 1 つだけです。シングル・ロー・クエリの SELECT 文では、INTO 句が select リストの後、FROM 句の前にきます。INTO 句には、select リストの各項目の値を受け取るホスト変数のリストを指定します。select リスト項目と同数のホスト変数を指定してください。ホスト変数と一緒に、結果が NULL であることを示すインジケータ変数も指定できます。
SELECT 文が実行されると、データベース・サーバは結果を取り出して、ホスト変数に格納します。
クエリが複数のローを返すと、データベース・サーバは SQLE_TOO_MANY_RECORDS エラーを返す。
クエリがローを返さなかった場合、警告 SQLE_NOTFOUND が返される。
SQLCA 構造体で返されるエラーと警告の詳細については、SQLCA (SQL Communications Area) の初期化を参照してください。
たとえば、次のコードは employee テーブルから正しくローをフェッチできた場合は 1 を、ローが存在しない場合は 0 を、エラーが発生した場合は -1 を返します。
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 */ } } |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |