Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
構文 1 は、Adaptive Server Enterprise と互換性のある、CALL 文の代替としてプロシージャーを呼び出します。構文 2 は、Transact-SQL で準備された SQL 文を実行します。
[ EXECUTE | EXEC ][ @return_status = ] [creator.]procedure_name [ argument, ... ]
argument : [ @parameter-name = ] expression | [ @parameter-name = ] @variable [ output ]
EXECUTE ( string-expression )
構文 1 は、Transact-SQL との互換性を保つために実装されています。EXECUTE はストアドプロシージャーを呼び出します。オプションとしてプロシージャーパラメーターを指定し、出力された値を取得し、ステータス情報を返します。Watcom SQL では、CALL 文または EXECUTE IMMEDIATE 文を使用します。
構文 2 を使用すると、Transact-SQL のストアドプロシージャーとトリガーの中で動的文を実行できます。EXECUTE 文は、プロシージャーとトリガーの中から実行できる文の種類を増やします。これを使って、プロシージャーに渡されるパラメーターを使って作成された文のように、動的に作成された文を実行できます。文の中のリテラル文字列は、一重引用符で囲みます。また、文は 1 行にしてください。EXECUTE 文の構文 2 は、Transact-SQL との互換性を保つために実装されていますが、Transact-SQL または Watcom-SQL のバッチとプロシージャーにも使用できます。
Transact-SQL の EXECUTE 文には、結果セットを予期することを示す方法はありません。Transact-SQL プロシージャーが結果セットを返すことを示すには、一例として次のような情報を指定する方法があります。
IF 1 = 0 SELECT 1 AS a
Transact-SQL のストアドプロシージャーとトリガーの中で文を実行することもできます。
プロシージャーの所有者であるか、そのプロシージャーに対する EXECUTE パーミッションまたは DBA 権限が必要です。
なし
SQL/2008 構文 1 はベンダー拡張です。構文 2 は、SQL/2008 標準のオプションの SQL 言語機能 B031、"Basic dynamic SQL" の EXECUTE IMMEDIATE 文と同じ機能を提供します。ただし、構文 2 の構文は、SQL/2008 標準の構文と異なります。
次のプロシージャーは、構文 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;