gpt4 book ai didi

sql-server - SQL Server 临时表已经存在?

转载 作者:行者123 更新时间:2023-12-02 06:17:24 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Drop temp table within IF ELSE statement

(1 个回答)


7年前关闭。




所以这很奇怪,我在这段 SQL 中声明了一个临时表,但我只根据 if else 声明了一次。逻辑。我在运行以下查询之前删除临时表,但仍然得到相同的行为。

但是,SQL Server 提示 There is already an object named '#ManifestTrackingBranches' in the database.
, 当我尝试使用我的 ReportType 运行查询时设置为 2。

我在这里错过了什么吗?

T-SQL

declare @ReportType int 
declare @CustomerNumber int
declare @StartDate datetime
declare @EndDate datetime

set @ReportType = 2
set @CustomerNumber = 81
set @StartDate = '2014-04-27'
set @EndDate = '2014-05-04'

if @CustomerNumber = 81
begin
if @ReportType = 1 -- roll up by location
begin
select InboundData.Tracking,
InboundData.NegotiatedRate
into #ManifestTrackingBranches
from InboundData
where Injected >= @StartDate and Injected <= @EndDate

-- Match tracking numbers against Ebill Data
select #ManifestTrackingBranches.Tracking,
SUM(isnull(cast(#ManifestTrackingBranches.NegotiatedRate as decimal(18,2)),0)) as ManifestAmount
from EBillData
group by #ManifestTrackingBranches.Branch
end

else if @ReportType = 2 -- Line Item Reports
begin
select InboundData.Tracking,
InboundData.NegotiatedRate
into #ManifestTrackingBranches
from InboundData
where Injected >= @StartDate and Injected <= @EndDate

-- Match tracking numbers against Ebill Data
select #ManifestTrackingBranches.Tracking,
SUM(isnull(cast(#ManifestTrackingBranches.NegotiatedRate as decimal(18,2)),0)) as ManifestAmount
from EBillData
end
end

如果 ReportType,则第二个发生错误设置为 2,我尝试选择到同一个临时表中。

最佳答案

在任何变量声明之前添加这行代码。

IF OBJECT_ID('tempdb..#ManifestTrackingBranches') IS NOT NULL 
DROP TABLE #ManifestTrackingBranches
GO

仅当此语句在单独的批处理中时才会有影响,使用 GO关键词。当您实际编写过程并通过再次执行 n 来测试代码时就足够了。

在您的程序中,您不能添加关键字 GO当从应用程序调用此过程时,也不需要删除表。对该过程的每次调用都将拥有自己的连接,并将创建一个仅限于该连接范围的临时表。

关于sql-server - SQL Server 临时表已经存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23832182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com