2017-03-17 73 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;