【发布时间】:2019-10-29 18:19:26
【问题描述】:
我有一个构建动态 SQL 查询的过程,简化为
@mySQLQuery = 'SELECT ' + @myCol + 'FROM' + @myTable
我想将此查询选择到一个临时表中,以便稍后在我的过程中使用,但我想不出正确的语法。
SELECT * INTO #myTempTable FROM ( @mySQLQuery) x
基本上是我想做的。
我试过sp_executeSQL 'SELECT * INTO #myTempTable FROM (' + @mySQLQuery + ') x'
在我的程序中,这也不起作用。
感谢您的任何建议`
【问题讨论】:
-
你真的需要开始使用
QUOTENAME并保护你的sql免受注入。 Dos and Don'ts of Dynamic SQL -
不知道它会起作用,但您是否尝试将
@mySQLQuery替换为原始行中的值。我假设 SQL 工作正常。 -
另外,如果您正在使用带有动态语句的
SELECT ... INTO语法,则临时表将仅保留在动态语句中。这意味着您将无法在sp_executesql的动态执行之外访问它。
标签: sql sql-server tsql dynamic-sql