SQL已存在名为'#临时工';更新至SAP PL-16后的数据库中
我正在使用SQL 2008 R2,今天我们使用SAP更新PL-16对其进行了更新。之后,我们在我以前开发的应用程序中遇到了问题 我们在临时表中遇到错误 错误: [SQL Server Native 10.0][SQL Server]已存在名为的对象 数据库中的“#TEMP”]FMS 我们尝试了一种解决方案,在每个查询的开头插入“drop table#temp”SQL已存在名为'#临时工';更新至SAP PL-16后的数据库中,sql,sql-server,sql-server-2008,sap,Sql,Sql Server,Sql Server 2008,Sap,我正在使用SQL 2008 R2,今天我们使用SAP更新PL-16对其进行了更新。之后,我们在我以前开发的应用程序中遇到了问题 我们在临时表中遇到错误 错误: [SQL Server Native 10.0][SQL Server]已存在名为的对象 数据库中的“#TEMP”]FMS 我们尝试了一种解决方案,在每个查询的开头插入“drop table#temp” IF (SELECT object_id('TempDB..#Temp')) IS NOT NULL BEGIN DROP T
IF (SELECT object_id('TempDB..#Temp')) IS NOT NULL
BEGIN
DROP TABLE #Temp
END
它仍然会提示相同的错误。有什么帮助吗
供参考的大查询:(
选择案例
当(转换(浮动,$[$38.11])>0时
和convert(float,$[$38.11],2)>=convert(float,t0.[U_FQuantity],2)
和转换(浮动,$[$38.11],2)0
和$[rdr1.U_mishkal]>=t0。[U_FWeight]
和[rdr1.U_mishkal]0美元
和$[rdr1.U_kmNsiaa]>=t0。[U Fkm]
和$[rdr1.U_kmNsiaa]0
和$[rdr1.U_Nefach]>=t0。[U_FVolume]
和$[rdr1.U_Nefach]0
和$[rdr1.U_点]>=t0。[U_点]
和$[rdr1.U_点]0
和$[rdr1.U_Hamtana]>=t0。[U_FHamtana]
和$[rdr1.U_Hamtana]0
和convert(float,$[$38.11],2)>=convert(float,t0.[U_FQuantity],2)
和转换(浮动,$[$38.11],2)0
和$[rdr1.U_mishkal]>=t0。[U_FWeight]
和[rdr1.U_mishkal]0美元
和$[rdr1.U_kmNsiaa]>=t0。[U Fkm]
和$[rdr1.U_kmNsiaa]0
和$[rdr1.U_Nefach]>=t0。[U_FVolume]
和$[rdr1.U_Nefach]0
和$[rdr1.U_点]>=t0。[U_点]
和$[rdr1.U_点]0
和$[rdr1.U_Hamtana]>=t0。[U_FHamtana]
和$[rdr1.U_Hamtana]0
和convert(float,$[$38.11],2)>=convert(float,t0.[U_FQuantity],2)
和转换(浮动,$[$38.11],2)0
和$[rdr1.U_mishkal]>=t0。[U_FWeight]
和[rdr1.U_mishkal]0美元
和$[rdr1.U_kmNsiaa]>=t0。[U Fkm]
和$[rdr1.U_kmNsiaa]0
和$[rdr1.U_Nefach]>=t0。[U_FVolume]
和$[rdr1.U_Nefach]0
和$[rdr1.U_点]>=t0。[U_点]
和$[rdr1.U_点]0
和$[rdr1.U_Hamtana]>=t0。[U_FHamtana]
和$[rdr1.U_Hamtana]这对我来说真的很奇怪。以一个#开头的临时表是会话的本地表。因此,每个会话都应该能够看到自己独立定义的#临时表,并在其中包含自己的数据。带有##前缀的临时表可以在会话之间共享。当最后一个使用它的会话关闭时,它们会自动删除ses,如果没有明确删除它
您正在创建临时表,删除它,并尝试在同一批中再次创建它吗?SQL解析器不喜欢这样。因此,例如,如果我将以下代码放入management studio,然后执行简单的语法检查,它会给我相同的错误,尽管它看起来应该是有效的
drop table #temp
select 1 x into #temp
select * from #temp
drop table #temp
select 2 x into #temp
select * from #temp
它不喜欢第二次尝试创建临时表
您可以尝试使用GO语句来确保创建和删除临时表的代码在自己的批处理中。SQL似乎对此没有问题:
GO
drop table #temp
select 1 x into #temp
select * from #temp
drop table #temp
GO
select 2 x into #temp
select * from #temp
GO
您正在删除##Temp而不是#Temp…在SQL Server中的一瞬间实验表明,它将这些对象视为不同的对象。@Mattstrower抱歉,刚才从引用链接复制并发布了:但我在运行时做了必要的更改。。但您的错误源不是您发布的代码。因此,在每次查询开始时,我们应该如何提供帮助?“这是什么意思?在每次运行查询之前都运行此语句?请给出一个示例,说明一个查询中出现此错误的地方。我假设存储过程中有多个语句,或者在other@MattThrower你现在能检查我的问题吗我已经发布了一个问题。。
GO
drop table #temp
select 1 x into #temp
select * from #temp
drop table #temp
GO
select 2 x into #temp
select * from #temp
GO