HOME >> Tips >> SQL Server Tips >> SQL

プロシージャ内でバインド変数を使用して動的にSQLを実行する方法

 
文書番号:20527




プロシージャ内で動的に作成したSQLにバインド変数を指定して実行する方法です。
SQL文自体は変わらないのでループして何度も実行する場合などは効率がいいです。

【実行手順】

  • バインド変数で値を指定してINSERT を実行します。
    以下の例では変数への値は固定で書いていますが実際には変数などで指定すると思います。
    
    
    --SQLを作成する変数宣言
    DECLARE @SQL nvarchar(2000);
    
    --バインド変数を定義するSQLを作成する変数宣言
    DECLARE @SQL_PARAM nvarchar(2000);
    
    --バインド変数用の変数宣言
    DECLARE @p_code char(4);
    DECLARE @p_name varchar(50);
    
    --実行するSQLを作成する
    SET @SQL = N'';
    SET @SQL = @SQL + N' INSERT INTO TAB_A(' ;
    SET @SQL = @SQL + N'      code';
    SET @SQL = @SQL + N'     ,name';
    SET @SQL = @SQL + N' ) VALUES (';
    SET @SQL = @SQL + N'      @p_code';
    SET @SQL = @SQL + N'     ,@p_name';
    SET @SQL = @SQL + N' ) ';
    
    --バインド変数のパラメーターSQLを作成する
    SET @SQL_PARAM = N'';
    SET @SQL_PARAM = @SQL_PARAM + N' @p_code char(4)';
    SET @SQL_PARAM = @SQL_PARAM + N',@p_name varchar(50)';
    
    --SQL を実行する
    EXEC sp_executesql @SQL,@SQL_PARAM,@p_code = '0001'
                                      ,@p_name = 'みかん';
    
    

【参考情報】

[TechNet] sp_executesql の使用
https://technet.microsoft.com/ja-jp/library/ms175170(v=sql.105).aspx