重複の可能性:
動的SQLステートメントでテーブル変数を使用する方法は?
TEMPORARY TABLEでやりたいことを実行すると、正常に機能します。
DECLARE @CTRFR VARCHAR(MAX)
SET @CTRFR = 'select blah blah blah' -- <-- very long select statement. this returns a 0 or some greater number. Please note! --> I NEED THIS NUMBER.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo][#CTRFRResult]') AND type IN (N'U') )
DROP TABLE [dbo].[#CTRFRResult]
CREATE TABLE #CTRFRResult
(
CTRFRResult VARCHAR(MAX)
)
SET @CTRFR = 'insert into #CTRFRResult ' + @CTRFR
EXEC(@CTRFR)
上記は問題なく動作します。
問題は、複数のデータベースが同じTEMPテーブルを使用していることです。したがって、(一時テーブルの代わりに)VARIABLEテーブルを使用する必要があります。
以下にあるものは、テーブルを宣言する必要があると言っているため、機能していません。
DECLARE @CTRFRResult TABLE
(
CTRFRResult VARCHAR(MAX)
)
SET @CTRFR = 'insert into @CTRFRResult ' + @CTRFR -- I think the issue is here.
EXEC(@CTRFR)
テーブル名がスコープ外であると想定しているため、に設定@CTRFR
しても機能しません。insert into...
変数テーブルを使用して一時テーブルコードを模倣するにはどうすればよいですか?
私が受け取っているエラーメッセージは次のとおりです。
テーブル変数「@CTRFRResult」を宣言する必要があります