如果我自己運行下面的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'? –