DetailPage-MSS-KB

サポート技術情報

文書番号: 262499 - 最終更新日: 2011年2月15日 - リビジョン: 3.2

この記事は、以前は次の ID で公開されていました: JP262499

概要

sp_executesql システム ストアド プロシージャを使用して、複数回再利用できる T-SQL ステートメント、または動的に構築された T-SQL ステートメントを実行します。このプロシージャは T-SQL ステートメントまたはバッチを処理するために、パラメータを入力として受け取ります。また、T-SQL ステートメントから生成された出力を格納できるように、このプロシージャに出力パラメータを指定することもできます (ただし、このことは SQL Server Books Online では説明されていません)。

sp_executesql で出力パラメータが役に立つ事例を以下に 2 つ示します。
  • sp_executesql が有益な出力を生成する場合、この出力を出力パラメータに格納すると、バッチ呼び出しがその後のクエリに対してこのパラメータを使用できます。
  • sp_executesql が出力パラメータを使用して定義したストアド プロシージャを実行している場合、sp_executesql の出力パラメータを使用してストアド プロシージャが生成した出力を保持できます。

詳細

sp_executesql で出力パラメータを使用する例を以下に 2 つ示します。

例 1
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @IntVariable INT
DECLARE @Lastlname varchar(30)
SET @SQLString = N'SELECT @LastlnameOUT = max(lname)
                   FROM pubs.dbo.employee WHERE job_lvl = @level'
SET @ParmDefinition = N'@level tinyint,
                        @LastlnameOUT varchar(30) OUTPUT'
SET @IntVariable = 35
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@level = @IntVariable,
@LastlnameOUT=@Lastlname OUTPUT
SELECT @Lastlname
例 2

CREATE PROCEDURE Myproc
    @parm varchar(10),
    @parm1OUT varchar(30) OUTPUT,
    @parm2OUT varchar(30) OUTPUT
    AS
      SELECT @parm1OUT='parm 1' + @parm
     SELECT @parm2OUT='parm 2' + @parm
GO
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)
SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
                             @parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
                      @parm1OUT varchar(30) OUTPUT,
                      @parm2OUT varchar(30) OUTPUT'

EXECUTE sp_executesql
    @SQLString,
    @ParmDefinition,
    @parm=@parmIN,
    @parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT

SELECT @parmRET1 AS "paramter 1", @parmRET2 AS "paramter 2"
go
drop procedure Myproc
詳細については、SQL Server Books Online の "sp_executesql の使用" および SQL Server 7.0 Books Online の "sp_executesql (T-SQL)" または SQL Server 2000 Books Online の "sp_executesql" を参照してください。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 262499  (http://support.microsoft.com/kb/262499/EN-US/ ) (最終更新日 2001-06-13) をもとに作成したものです。

キーワード: 
kbsqlmanagementtools kbinfo KB262499
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
共有
その他サポート オプション
マイクロソフト コミュニティ サポート フォーラム
お問い合わせ
マイクロソフト認定パートナーの検索
Microsoft Store