2017-02-09 60 views
1

請參閱下面的代碼:存儲過程:已經有一個數據庫名爲「#columntable」對象

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE Test 
AS 
BEGIN 
    begin 
    select * into #dbreviews from dbreviews 
    end 

    drop table #dbreviews 

    begin 
    select * into #dbreviews from dbreviews 
    end 

END 
GO 

我得到的錯誤是:

已經有一個名爲對象數據庫中的'#dbreviews'

這樣的問題:There is already an object named '#columntable' in the database告訴我這應該是可能的。

回答

3

按照SQL Server規範,它是不允許的。請參閱documentation

如果一個存儲 過程或批處理中創建一個以上的臨時表,它們必須有不同的名稱。

您正在創建兩個同名的臨時表#dbreviews。這是不允許的。

0

在您的PROC結束時,存在#dbreviews。當你再次運行它時,它已經存在。如果您想每次運行proc時重新創建,請使用:

IF OBJECT_ID('tempdb..#dbreviews') IS NOT NULL 
THEN 
    drop table #dbreviews 
END IF 

select * into #dbreviews from dbreviews 
相關問題