我正在 T-SQL 中处理一些相当长且复杂的过程,我需要在查询中使用相当多的变量。
我被困在这样的事情上:
SELECT @TableSQL = 'SELECT '
+ @columnsForInsert
+ '= COALESCE(@columnsForInsert
+ ''], ['', '''')
+ name
FROM MIGRATION_DICTIONARIES.dbo.' + @TableName + '_COLUMNS '
EXEC sp_executesql @TableSQL
PRINT @columnsForInsert
如您所见,我尝试将某个临时表中的所有行连接成一行,然后将其分配给@columnsForInsert
变量。但是,当我运行此字符串时,sp_executesql
它会进入@columnsForInsert
不可见的范围。
你们知道如何让它运行吗?
换句话说。我有类似的东西
SELECT @columnsForInsert = COALESCE(@columnsForInsert + '], [', '') + name
FROM MIGRATION_DICTIONARIES.dbo.Foobar_COLUMNS
这在我的程序中运行良好。然而,在最终版本中,Foobar 将在一个变量中,所以简单地放在@tableName
那里是行不通的。我怎样才能做到这一点?
我正在使用 Microsoft SQL Server 2012