温馨提示:本文翻译自stackoverflow.com,查看原文请点击:sql server - Switch case with storing results into same table in SQL
sql sql-server

sql server - 切换大小写并将结果存储到SQL中的同一表中

发布于 2020-03-27 15:53:41

我想根据条件将结果存储到表中。如何实现相同?以下是代码:执行时会引发#a已经存在的错误。

IF @Input ='1'
        BEGIN
                drop #a
                SELECT *
                INTO #a
                FROM table1
        END;

    ELSE IF @Input ='2'
        BEGIN
                drop #a
                SELECT *
                INTO #a
                FROM table2
        END;

查看更多

查看更多

提问者
Keval
被浏览
19
Sebastian Brosch 2020-01-31 17:56

您可以使用全局临时表使用此解决方案可能不是最好/最安全的解决方案)。语句通过执行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函数的问题是超出范围。