トップ回答者
sp_executesql を使用したSQL文字列の中で、テーブル変数を使用するには?

質問
-
SQL Server 2005 SP1
ストアドの中で、以下のように記述しているのですが、
「テーブル変数 @worktable" を宣言してください。」というエラーになります。
@worktableが、パラメータと見なされている為だと思うのですが、
SQL文の中で、テーブル変数を使用するにはどうしたら、よいでしょうか。
DECLARE
@worktable table
(
AA varchar(3) not null
)
DECLARE @w_sql nvarchar(100)
SET @w_sql = N'INSERT INTO @worktable( ・・・'
EXECUTE sp_executesql @w_sql
回答
すべての返信
-
コード ブロック
/* テーブル変数を使う場合 */
DECLARE @worktable table
(AA varchar(3) not null)INSERT INTO @worktable VALUES('abc')
SELECT * FROM @worktable/* 一時テーブルを使う場合 */
CREATE TABLE #myTmpTbl
(col1 varchar(3) not null)DECLARE @w_sql nvarchar(100)
SET @w_sql = N'INSERT INTO #myTmpTbl VALUES(''def'')'
EXECUTE sp_executesql @w_sqlSELECT * FROM #myTmpTbl
上記のスクリプトの動き、及びエラーメッセージから考えるに、sp_executesql はそのストアド プロシージャや T-SQL スクリプトとは別のスコープで実行されているようですね。