首页 > 解决方案 > SQL IF ELSE 插入#temp 表问题

问题描述

我有一个场景,我不确定如何解决。下面我有一个 if else 语句以及将数据插入临时表。

IF @code= 'All'
    BEGIN
        DROP TABLE IF EXISTS #temp
        SELECT * 
        INTO #temp
        FROM #tempCity
    END
ELSE
    BEGIN
        DROP TABLE IF EXISTS #temp
        SELECT * 
        INTO #temp
        FROM #tempCity
        WHERE [City_Code] = @code
    END

值得注意的是,我确实需要表#temp在两种情况下都具有相同的名称,因为我稍后会使用它并且可能插入的内容可能因情况而异,这就是我没有定义的原因#temp

我收到一条错误消息,说明在这种情况下可以理解:

There is already an object named '#temp' in the database.

有谁知道我可以解决这个微妙问题的方法吗?

标签: sqlsql-server

解决方案


为什么不简单地使用布尔逻辑:

IF EXISTS (SELECT 1 FROM #temp)
   DROP TABLE #temp

SELECT * 
INTO #temp
FROM #tempCity
WHERE (@code= 'All' OR [City_Code] = @code);

推荐阅读