構文 1 は、Adaptive Server Enterprise と互換性のある、CALL 文の代替としてプロシージャを呼び出すために使用します。構文 2 は、Transact-SQL で準備された SQL 文を実行するために使用します。
EXECUTE [ @return_status = ] [creator.]procedure_name [ argument, ... ]
argument : [ @parameter-name = ] expression | [ @parameter-name = ] @variable [ output ]
EXECUTE ( string-expression )
構文 1 はストアド・プロシージャを実行します。オプションとしてプロシージャ・パラメータを指定し、出力された値を取得し、ステータス情報を返します。
EXECUTE 文は、Transact-SQL 互換性のために用意されていますが、Transact-SQL または Watcom-SQL のバッチとプロシージャにも使えます。
構文 2 を使用すると、Transact-SQL のストアド・プロシージャとトリガの中で文を実行できます。EXECUTE 文は、プロシージャとトリガの中から実行できる文の種類を増やします。これを使って、プロシージャに渡されるパラメータを使って作成された文のように、動的に作成された文を実行できます。文の中のリテラル文字列は、一重引用符で囲みます。また、文は 1 行にしてください。
Transact-SQL の EXECUTE 文には、結果セットを予期することを示す方法はありません。Transact-SQL プロシージャが結果セットを返すことを示すには、一例として次のような情報を指定する方法があります。
IF 1 = 0 THEN SELECT 1 AS a |
Transact-SQL のストアド・プロシージャとトリガの中で文を実行することもできます。EXECUTE IMMEDIATE 文 [SP]を参照してください。
プロシージャの所有者であるか、そのプロシージャに対する EXECUTE パーミッションまたは DBA 権限が必要です。
なし
次のプロシージャは、構文 1 を示します。
CREATE PROCEDURE p1( @var INTEGER = 54 ) AS PRINT 'on input @var = %1!', @var DECLARE @intvar integer SELECT @intvar=123 SELECT @var=@intvar PRINT 'on exit @var = %1!', @var; |
次の文は、パラメータに 23 の入力値を提供するプロシージャを実行します。Open Client または JDBC アプリケーションから接続している場合は、クライアントのウィンドウに PRINT メッセージが表示されます。ODBC または Embedded SQL アプリケーションから接続している場合、このメッセージはデータベース・サーバ・メッセージ・ウィンドウに表示されます。
EXECUTE p1 23; |
次の文はプロシージャを実行する代替方法です。これは、パラメータがいくつかあるときに便利です。
EXECUTE p1 @var = 23; |
次の文は、パラメータにデフォルト値を使用するプロシージャを実行します。
EXECUTE p1; |
次の文は、プロシージャを実行し、リターン状況をチェックするために変数へのリターン値を保管します。
EXECUTE @status = p1 23; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |