【问题标题】:SQL - Dynamic table name output with sp_executesqlSQL - 使用 sp_executesql 输出动态表名
【发布时间】:2016-06-17 10:17:31
【问题描述】:

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

希望另一双眼睛能看到我缺少的东西。谢谢

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

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    我不是 100% 对此...我想我遇到了类似的问题,但我通过将临时表设为全局临时表来解决它...##outtbl

    【讨论】:

    • 我会避免使用全局临时表。他们有一些问题,。它们可用于任何连接,因此并发是一场噩梦
    • 提供建议...因为我也想知道一种更有效的方法。我查找了我编写的使用全局临时表的过程,并将其切换为本地临时表。我收到与上述相同的错误,但适用于全局临时表。
    • 这里是关于上述问题的更多信息。 stackoverflow.com/questions/662049/…
    猜你喜欢
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多