Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (E ~ O)

 

EXECUTE 文 [ESQL]

この文は、準備された SQL 文を実行するために使用します。

構文 1
EXECUTE statement
[ USING { hostvar-list | DESCRIPTOR sqlda-name } ]
[ INTO { into-hostvar-list | DESCRIPTOR into-sqlda-name } ]
[ ARRAY :row-count ]
row-count : integer または hostvar
statement :   identifier | hostvar | string 
sqlda-name : identifier
into-sqlda-name :  identifier
構文 2
EXECUTE IMMEDIATE statement
statement :  string | hostvar
パラメータ
  • USING 句   SELECT 文または CALL 文から返される結果は、変数リストの変数の中、または指定した SQLDA が記述するプログラム・データ領域の中のいずれかに入ります。OUTPUT (select リストまたはパラメータ) 対ホスト変数リスト、または OUTPUT 対 SQLDA 記述子配列は、どちらも対応が 1 対 1 です。

  • INTO 句   EXECUTE INTO を INSERT 文と一緒に使用する場合、挿入されたローは 2 番目の記述子に返されます。たとえば、オートインクリメント・プライマリ・キーを使用するとき、またはプライマリ・キーの値を生成する BEFORE INSERT トリガを使用するとき、EXECUTE 文により、即座にローを再フェッチし、そのローに割り当てられているプライマリ・キーの値を決定するためのメカニズムが提供されます。オートインクリメント・キーと一緒に @@identity を使用する場合にも同じ結果が得られます。

  • ARRAY 句   オプションの ARRAY 句を提供された INSERT 文と一緒に使用して、ワイド挿入ができます。ワイド挿入は複数のローを同時に挿入し、パフォーマンスを改善します。整数値は、挿入するローの数です。SQLDA には各エントリの変数 (ロー数 * カラム数) を入れます。最初のローは SQLDA の変数 0 から (ロー当たりのカラム数) -1 に入り、以後のローも同様です。

備考

EXECUTE 文を使用して SQL 文を作成できます。データベースから多数のローを返す SELECT 文または CALL 文にはカーソルを使用します (ESQL でのカーソルの使用を参照してください)。

INSERT、UPDATE、または DELETE の実行が成功した後、SQLCA (SQLCOUNT) の sqlerrd[2] フィールドに、演算によって影響を受けるローの数が入ります。

構文 1   以前に作成された名前付きの動的文を実行します。要求についての情報を提供するホスト変数プレースホルダ (バインド変数) が動的文にある場合は、sqlda-name に C 変数を指定します。この C 変数は SQLDA へのポインタであり、SQLDA には動的文のすべてのバインド変数のための記述子を含めておきます。この方法以外に、バインド変数を hostvar -list で指定する方法もあります。

構文 2   バインド変数または出力がない文を PREPARE して EXECUTE するための省略形です。文字列またはホスト変数の中にある SQL 文を即座に実行し、完了時に削除します。

パーミッション

実行される文に関するパーミッションがチェックされます。

関連する動作

なし

参照
標準と互換性
  • SQL/2003   コア SQL に含まれない機能。

DELETE を実行します。

EXEC SQL EXECUTE IMMEDIATE
'DELETE FROM Employees WHERE EmployeeID = 105';

準備された DELETE 文を実行します。

EXEC SQL PREPARE del_stmt FROM
'DELETE FROM Employees WHERE EmployeeID = :a';
EXEC SQL EXECUTE del_stmt USING :employee_number;

準備されたクエリを実行します。

EXEC SQL PREPARE sel1 FROM
'SELECT Surname FROM Employees WHERE EmployeeID = :a';
EXEC SQL EXECUTE sel1 USING :employee_number INTO :surname;