将表变量传递给exec SQL Server

将表变量传递给exec SQL Server,sql,sql-server,variables,exec,Sql,Sql Server,Variables,Exec,我正在尝试编写此存储过程,但无法将临时表或表变量的结果传递给EXEC@SQL任务: 我还使用了表变量see commented area,但不确定它是如何工作的 请将此代码复制并粘贴到您的查询窗口以获得更多了解。 没错,霍根。我希望@colsunpoivot的结果包含在某个变量中,这样我就可以将其应用到我当前使用@TEMP1的下一段代码中 试试这个 DECLARE @colList VARCHAR(MAX) SELECT @colList = Stuff(( Select ',

我正在尝试编写此存储过程,但无法将临时表或表变量的结果传递给EXEC@SQL任务:

我还使用了表变量see commented area,但不确定它是如何工作的

请将此代码复制并粘贴到您的查询窗口以获得更多了解。 没错,霍根。我希望@colsunpoivot的结果包含在某个变量中,这样我就可以将其应用到我当前使用@TEMP1的下一段代码中

试试这个

DECLARE @colList VARCHAR(MAX)

SELECT @colList = 
  Stuff((
    Select ', ' + C.COLUMN_NAME
    From INFORMATION_SCHEMA.COLUMNS As C
    Where C.TABLE_SCHEMA = T.TABLE_SCHEMA
        And C.TABLE_NAME = T.TABLE_NAME
    Order By C.ORDINAL_POSITION
    For Xml Path('')
 ), 1, 2, '') 
From INFORMATION_SCHEMA.TABLES As T
WHERE TABLE_NAME = @Table_Name
GROUP BY TABLE_NAME
然后使用@colList而不是@TEMP1

你不需要一张临时桌子或任何其他疯狂的东西

注意-我从这里得到了列代码

试试这个

DECLARE @colList VARCHAR(MAX)

SELECT @colList = 
  Stuff((
    Select ', ' + C.COLUMN_NAME
    From INFORMATION_SCHEMA.COLUMNS As C
    Where C.TABLE_SCHEMA = T.TABLE_SCHEMA
        And C.TABLE_NAME = T.TABLE_NAME
    Order By C.ORDINAL_POSITION
    For Xml Path('')
 ), 1, 2, '') 
From INFORMATION_SCHEMA.TABLES As T
WHERE TABLE_NAME = @Table_Name
GROUP BY TABLE_NAME
然后使用@colList而不是@TEMP1

你不需要一张临时桌子或任何其他疯狂的东西


注意-我从这里得到了列代码

但是我在传递临时表的结果时遇到了问题,您能解释一下您的问题吗?这里有些奇怪,一方面看起来您试图创建一个逗号分隔的列列表。但是您说要传递一个表变量。在任何情况下,问题显然就在这里->声明@TEMP1 NVARCHARMAX='SELECT colsunprovot FROM TEMP'我相信您希望@TEMP1有一个好的变量名!要保存列列表而不是选择字符串,我真的不需要复制并粘贴到窗口来理解。这里的作用域有问题-如果你有一个动态SQL来创建一个变量,你不能将它传回-唯一的方法是使用一个单独的函数或找到一种不使用动态SQL的方法。但是我在传递临时表的结果时遇到了问题,你能解释一下你的问题吗?这里有些奇怪,一方面,看起来您正在尝试创建一个以逗号分隔的列列表。但是您说要传递一个表变量。在任何情况下,问题显然就在这里->声明@TEMP1 NVARCHARMAX='SELECT colsunprovot FROM TEMP'我相信您希望@TEMP1有一个好的变量名!要保存列列表而不是选择字符串,我真的不需要复制并粘贴到窗口来理解。这里的作用域有问题-如果你有一个动态SQL来创建一个变量,你不能将它传回去-唯一的方法是使用一个单独的函数,或者找到一种不使用动态SQL的方法谢谢,但这不起作用,这就是为什么我要求执行它。这是错误,消息156,级别15,状态1,第16行,关键字“FROM”附近语法不正确。MSG 156,第15级,状态1,第21行在关键词“订单”附近不正确的语法。非常感谢@ HOGAN。@尼克-如果这回答你的问题/帮助你,请考虑投票和标记作为正确的答案。当然@ Hogan。只是把这个答案标记为我的答案,因为在这里你摆脱了那些复杂的动态sql部分,让我的生活变得简单。谢谢,但这不起作用,这就是为什么我要求执行它。这是错误,消息156,级别15,状态1,第16行,关键字“FROM”附近语法不正确。MSG 156,第15级,状态1,第21行在关键词“订单”附近不正确的语法。非常感谢@ HOGAN。@尼克-如果这回答你的问题/帮助你,请考虑投票和标记作为正确的答案。当然@ Hogan。只是把这个答案标记为我的答案,因为在这里你摆脱了那些复杂的动态sql部分,让我的生活变得轻松。