2017-03-17 51 views
0
IF (@Track = 'SearchSelect') 
BEGIN 
    IF(@limitedAccess = 'true') 
    BEGIN 
     SELECT CusLst.CustomerId, MAX(CusCon.CustomerContactId) AS CustomerContactId 
     INTO #CustomerList1 
     FROM CustomerList CusLst   
     LEFT JOIN CustomerContact CusCon ON CusLst.CustomerId = CusCon.CustomerId 
     INNER JOIN CustomerUser ON CusLst.CustomerId = CustomerUser.CustomerId 
     WHERE CustomerUser.UserId = @userId 
     GROUP BY CusLst.CustomerId 
    END 
    ELSE 
    BEGIN 
     SELECT CusLst.CustomerId, MAX(CusCon.CustomerContactId) AS CustomerContactId 
     INTO #CustomerList1 
     FROM CustomerList CusLst   
     LEFT JOIN CustomerContact CusCon ON CusLst.CustomerId = CusCon.CustomerId 
     GROUP BY CusLst.CustomerId 
    END 

這else條件導致一個錯誤customerList1已經存在。如果我想根據存儲過程中的條件填充臨時表,該怎麼辦?如果臨時表

+1

爲什麼不先聲明'customerList1'作爲表變量,然後使用它? –

回答

0

你開始工作

IF Object_id('tempdb..#CustomerList1') IS NOT NULL 
BEGIN 
     DROP TABLE #CustomerList1 
END 
+0

它仍然給人同樣的錯誤 – user19041992

+0

你就把#CustomerList1在tempdb? –

+0

還是你設置PK?如果是的話,那麼在插入它之前每次都應該TRUNCATE TABLE以避免PK中的數據衝突? –

0

編輯之前的添加以下代碼:

你可能已創建臨時表或者刪除您創建的表或使用

INSERT INTO #customerlist1(columns) 
SELECT columns 
FROM customerlist 

因爲這

SELECT CusLst.CustomerId, MAX(CusCon.CustomerContactId) AS CustomerContactId 
    INTO #CustomerList1 
    FROM CustomerList CusLst   
    LEFT JOIN CustomerContact CusCon ON CusLst.CustomerId = CusCon.CustomerId 
    INNER JOIN CustomerUser ON CusLst.CustomerId = CustomerUser.CustomerId 
    WHERE CustomerUser.UserId = @userId 
    GROUP BY CusLst.CustomerId 

創建一個新的臨時表,這就是爲什麼它會拋出一個錯誤。

https://www.w3schools.com/sql/sql_select_into.asp

0

首先檢查你的臨時表的存在與否在database.IF存在投下您的臨時表,然後創建新的。

IF EXISTS(SELECT 1 FROM tempdb.dbo.sysobjects WHERE xtype in ('U') AND id = 
object_id(N'tempdb..#CustomerList1')) 
     DROP TABLE #CustomerList1;