【发布时间】:2012-09-11 05:09:37
【问题描述】:
如果我用 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”
【问题讨论】:
标签: tsql variables temp-tables