2016-03-03 35 views
0

我正在尝试将动态表名称加载到本地表中。从我找到的例子看起来很简单,但是我收到一条错误消息。 - >'#outtbl_15133897'附近的语法不正确SQL - 使用sp_executesql输出动态表名称

希望另一组眼睛能看到我失踪的东西。由于

DECLARE @OutTbl TABLE (Name varchar(100), type varchar(20), row int); 
DECLARE @curName as NVARCHAR(MAX); 

DECLARE @sqlCommand as NVARCHAR(MAX); 
SET @curName = '#outtbl_' + LEFT(replace(replace(CONVERT (time, GETDATE()),':',''),'.',''),8); 

SET @sqlCommand = 'CREATE TABLE #OutTbl (Name varchar(100), type varchar(20), row int); ' 
+ 'INSERT INTO #outtbl SELECT c.Name,c.Type, ROW_NUMBER() OVER(ORDER BY c.QueryID,c.GroupID,c.ColumnID) as row ' 
+ 'FROM MYDB.dbo.DynamicReport_Columns c ' 
+ 'INNER JOIN MYDB.dbo.DynamicReport_Tables t on t.TableID = c.TableID ' 
+ 'WHERE c.QueryID=1 and c.GroupID=1 and IsOutput <> ''N'';'; 
SET @curName = @curName + ' TABLE OUTPUT'; 
EXEC sys.sp_executesql @sqlCommand,@curName,@OutTbl output 

回答

-1

我不是这个100%...我想我也有类似的问题,但我通过使临时表全局临时表...... ## outtbl

+0

我解决了它会避免全局临时表。他们有一些问题,。他们可用于任何连接,所以并发性是一场噩梦 –

+0

提供一个建议......因为我也想知道一个更有效的方法。我查阅了使用全局临时表编写的程序,并将其切换为本地临时表。我收到了与上面相同的错误,但适用于全局临时表。 – manderson

+0

这是关于上述问题的更多信息。 http://stackoverflow.com/questions/662049/dynamic-sql-results-into-temp-table-in-sql-stored-procedure – manderson