0

无论如何我可以做类似的事情

无论如何我可以将变量放入 FROM 子句。像这样

SELECT * FROM myGetTableFunc(@tableName)

SELECT * FROM EXEC('SELECT * FROM ' + @tableName)

SELECT * INTO #myUndeclaredTable FROM @tableName

我认为你说对了。

基本上,我将有一些具有共享公共列的表,例如排序键等。在存储过程中,我使用这些共享列来处理表并加入一些东西,然后返回它。

但目前我需要为每个表创建一个新的存储过程,因为我不能在 FROM 子句中使用变量。将整个事情变成动态 SQL 是我唯一的解决方案吗?

诸如此类的事情OPENQUERY OPENROWSET是不可能的。

我想到了类似的东西

EXEC ('SELECT * INTO #myTempTable FROM ' + @tableName)
SELECT * FROM #myTempTable

#myTempTable似乎不可见,即使我认为它具有整个会话的范围。

感谢您的任何帮助!

4

1 回答 1

1

尝试这个:

DECLARE @TableName AS VARCHAR(100)
SELECT @TableName = 'myTable'

EXECUTE ('SELECT * INTO #TEMP  FROM ' + @TableName +'; SELECT * FROM #TEMP;')

这只是从这里拍摄的:

TSQL 从动态 sql 中选择到 Temp 表

看看这里:

动态创建#temp表,然后用于插入数据

于 2013-01-15T10:10:37.163 回答