在if子句中创建一个临时表



在存储过程中:

IF (condition1)
     SELECT * INTO #temp FROM table1 WHERE name = 'Dave'
ELSE
     SELECT * INTO #temp FROM table1 WHERE name = 'Greg'

创建存储过程时,它说"数据库中已经有一个名为'#temp'的对象"。它必须认为我正在创建两次相同的温度表。

有一个很好的方法吗?

我知道我可以插入#temp(....),但是有很多字段,我不想重新输入它们。

如果这很愚蠢,请不要-1
只是让我知道,我将删除
我不知道您的状况1

为什么不呢?

SELECT * INTO #temp 
  FROM table1 
 WHERE ( condition1 and name = 'Dave')
    OR (!condition1 and name = 'Greg')

尝试以下:

SELECT * INTO #temp FROM table1 WHERE 1 = 0
IF (condition1)
     INSERT INTO #temp SELECT * FROM table1 WHERE name = 'Dave'
ELSE
     INSERT INTO #temp SELECT * FROM table1 WHERE name = 'Greg'

选择进入不会返回任何行,但它将用正确的列制作临时表。

您是否尝试过:

     If (condition1)
        INSERT INTO #temp 
          SELECT * FROM table1 where name = 'Dave'
     ELSE
        INSERT INTO #temp 
       SELECT * FROM table1 where name = 'Greg'

最新更新