您可以使用全局临时表使用此解决方案(可能不是最好/最安全的解决方案)。语句通过执行EXECUTE
:
DECLARE @Input VARCHAR(20) = '1'
IF OBJECT_ID('tempdb..##a') IS NOT NULL
BEGIN
DROP TABLE ##a
END
IF @Input = '1'
EXEC ('SELECT * INTO ##a FROM table1;')
ELSE IF @Input = '2'
EXEC ('SELECT * INTO ##a FROM table2;')
-- you can implement steps here to create a local temporary table.
-- see: https://stackoverflow.com/questions/9534990/tsql-select-into-temp-table-from-dynamic-sql
SELECT * FROM ##a
也看一下这个问题:TSQL从动态sql选择进入Temp表。还介绍了如何以两种不同方式(使用全局临时表或视图)将数据作为本地临时表获取。
使用该EXECUTE
函数的问题是超出范围。
抱歉,这行不通!
@Keval为什么这行不通?
我试过了。再次说该表已经存在。
是的,您编辑的答案非常完美!谢谢!!