使用If条件插入一个Temp表

时间:2012-06-29 13:31:07

标签: sql sql-server

  

可能重复:
  SQL IF statement is being ignored
  Odd error using IF/ELSE IF statements

我正在尝试插入一个temptable。但这是一个错误。请帮忙

Declare @Live BIT = 'True'

Step 1:-  
If @Live = 'True'
    BEGIN 
        IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL  
        DROP TABLE #tempTable
        SELECT TOP 1 INTO #tempTable FROM Table1

    END
    ELSE

        IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL  
        DROP TABLE #tempTable
        SELECT TOP 5 INTO #tempTable FROM Table1

Step 2:-
IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL  
DROP TABLE #tempTable
If @Live = 'True'
    BEGIN         
        SELECT TOP 1 INTO #tempTable FROM Table1            
    END
    ELSE
        SELECT TOP 5 INTO #tempTable FROM Table1  

在Step1& Step2,错误显示为

  

“数据库中已经有一个名为'#tempTable'的对象。”

条件:我必须将记录插入一个#tempTable

还有其他替代品可以达到这个要求吗?

2 个答案:

答案 0 :(得分:2)

我建议先申报临时表,然后再使用INSERT INTO代替SELECT INTO

IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL  
BEGIN
    DROP TABLE #tempTable
END

CREATE TABLE #tempTable
(
   --columns go here
)

If @Live = 'True'
BEGIN         
    INSERT INTO #tempTable
    SELECT TOP 1 * FROM Table1            
END
ELSE
    INSERT INTO #tempTable
    SELECT TOP 5 * FROM Table1  

答案 1 :(得分:0)

在运行查询之前运行此命令,因为已经存在#tempTable

DROP TABLE #tempTable

并尝试此代码

如果OBJECT_ID('tempdb ..#tempTable')不为空 drop table #tempTable

创建表#tempTable(一个int) 插入#tempTable(a)选择1

从#tempTable

中选择*