0

重複の可能性:
SQLIFステートメントが無視されている
IF/ELSEIFステートメントを使用した奇数エラー

私は1つの誘惑に挿入しようとしています。しかし、それはエラーを投げています。助けてください

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  

ステップ1とステップ2で、次のように表示されるエラー

「データベースにはすでに「#tempTable」という名前のオブジェクトがあります。」

条件:レコードを1つの#tempTableに挿入する必要があります

この要件を達成するための他の代替手段はありますか?

4

2 に答える 2

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  
于 2012-06-29T13:49:53.577 に答える
0

#tempTable が既に存在するため、クエリを実行する前にこのコマンドを実行します

DROP TABLE #tempTable

このコードを試してください

IF OBJECT_ID('tempdb..#tempTable') is not null テーブル #tempTable を削除

テーブルを作成 #tempTable (a int) #tempTable (a) に挿入 1 を選択

#tempTable から * を選択

于 2012-06-29T13:49:37.247 に答える