如果我自己运行下面的select语句(表名是硬编码的),它运行良好,临时表被创建。如果我按照下面的方式运行它,它会显示'无效的对象名称'#TempCodes'',但是当我打印@ Sql1时,它看起来与我自己运行时完全相同(表名硬编码)。需要帮助。消息说临时表不存在:'无效的对象名'#TempCodes'。'
关于这里发生了什么的任何想法将不胜感激。
DECLARE @TableName NVARCHAR(50)
SET @TableName = '[My Table Name]'
DECLARE @Sql1 NVARCHAR(MAX);
SET @Sql1 = N'SELECT AccountNumber,LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS mdcodes INTO #TempCodes FROM (SELECT AccountNumber,CAST(''<XMLRoot><RowData>''
+ REPLACE(MD_Results,'','',''</RowData><RowData>'')
+ ''</RowData></XMLRoot>'' AS XML) AS x FROM ' + @TableName
+ N')t CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n)'
IF OBJECT_ID('tempdb.dbo.#TempCodes', 'U') IS NOT NULL
BEGIN
drop table #TempCodes
END
EXECUTE sp_executesql @Sql1
Select * from #TempCodes
我敢打赌,你可以创建你的代码的最低版本,使问题只注重问题里面
Insert into table..select
语法。 [**如何创建一个最小化,完整和可验证的示例**](http://stackoverflow.com/help/mcve) –我猜标签你的意思是'sql-server'而不是'server'? –