プロシージャ内でバインド変数を使用して動的に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 = 'みかん';