如何选择如何填充sql中的#temptable?

Bes*_*ska 2 sql sql-server

好的,我有一个可能是一个非常容易的问题,你在那里的Sql大师......

给定一种类型的布尔值T,我想用数据集A填充临时表,如果T为真,或者如果T为假则填充数据集B. 我以为这将是如何做到的:

DECLARE @foo INT
SET @foo = null

IF (@foo is null)
    BEGIN
        SELECT 'foo was null' INTO #TempTable
    END
ELSE
    BEGIN
        SELECT 'foo not null' INTO #TempTable
    END
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我收到一条错误,上面写着"数据库中已经存在一个名为'#TempTable'的对象."

显然,在评估条件之前,Sql试图在每种情况下创建表...?这对我来说似乎很奇怪,但没关系...但是这样做的正确方法是什么?

编辑:我在Sql Server中,但我怀疑这是一个更普遍的问题......但如果我错了,请告诉我.

Ed *_*per 5

为什么不使用基于集合而不是程序解决方案:

SELECT CASE WHEN @foo is null 
            THEN 'foo was null'
            ELSE 'foo not null'
       END                      AS result
INTO  #TempTable  
Run Code Online (Sandbox Code Playgroud)