如果Else条件为临时表

时间:2017-03-17 07:28:28

标签: sql sql-server

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

由于customerList1已存在,因此导致错误。如果我想根据存储过程中的条件填充临时表怎么办?

3 个答案:

答案 0 :(得分:0)

在开始工作之前添加此代码

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

答案 1 :(得分: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

答案 2 :(得分:0)

首先检查您的临时表是否存在于数据库中.IF存在意味着删除临时表,然后创建新表。

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