Sql 无效的对象名称'#卷';
我收到以下信息 无效的对象名称#卷Sql 无效的对象名称'#卷';,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,我收到以下信息 无效的对象名称#卷 具有以下代码的存储过程的备用运行。如果twoBD列值为如果要创建一个名为#volume的临时表,则必须首先创建它。每次使用时都必须执行此操作,因为它是临时的 由于您没有显示代码的其余部分,因此无法告诉您如何修复它 添加了你现在发布的程序代码 我实际上没有看到您的代码中有问题,无法确定表、GetWorkingMins()等是否没有问题,但我不知道这些会如何导致丢失的#volume消息 但我确实看到了一些奇怪的事情。您说错误消息是“无效对象名称#卷”,但我很确定S
具有以下代码的存储过程的备用运行。如果twoBD列值为如果要创建一个名为#volume的临时表,则必须首先创建它。每次使用时都必须执行此操作,因为它是临时的 由于您没有显示代码的其余部分,因此无法告诉您如何修复它 添加了你现在发布的程序代码 我实际上没有看到您的代码中有问题,无法确定表、GetWorkingMins()等是否没有问题,但我不知道这些会如何导致丢失的#volume消息 但我确实看到了一些奇怪的事情。您说错误消息是“无效对象名称#卷”,但我很确定SQL server不会在错误消息中将#卷更改为#卷——只是在本地(2005年)尝试了它,但没有。这让我想知道您是否没有实际调用的这个过程的另一个版本——sql目录也可能会被混淆,因此可能不是您的代码导致了问题,尽管这是一个罕见的问题。在进程顶部添加print或其他方法,以确保调用的内容与您认为调用的内容相同 另一种可能性是,消息可能来自导致这种奇怪的内部存储过程。尝试在gskstat()中将#volume更改为#myvolume,然后查看错误消息是否更改 在进程顶部创建#卷对于调试这一点是一件好事。在这种情况下,生命周期定义得很好,当进程结束时,卷将消失。即使调用过程或客户端连接也创建了#volume gskstat(),也不会因此而出现任何问题(sql将创建第二个#volume表(使用不同的隐藏表名后缀)
Create PROCEDURE [dbo].[gsktat]
(
@startdate datetime,
@enddate datetime
)
AS
BEGIN
SET ANSI_WARNINGS OFF
create table #volume (Sdate datetime,edate datetime ,vstatus varchar(50)
,twoBD varchar(50),TAT varchar(50),ageing int)
insert into #volume(Sdate,edate,vstatus,twoBD)
(select [Start date],[End date],[Status],dbo.[GetWorkingMinss]([Start date],[End date],'ss') from GSK)
Declare @claimid int
set @claimid = '48'
If Exists (Select * from #volume where
(SELECT
RIGHT('00'+CONVERT(VARCHAR(10),( ((cast(STR(Floor(REPLACE(twoBD,':','.')),8,0)as int)*60+CAST(Right(00.45,2) as int)))%3600)/60),2)
+':'
+ RIGHT('00'+CONVERT(VARCHAR(10), ((cast(STR(Floor(REPLACE(twoBD,':','.')),8,0)as int)*60+CAST(Right(00.45,2) as int)))%60),2) AS [ TAT]
)<= @claimid)
begin
insert into #volume(TAT)values('Met')
end
else
begin
insert into #volume(TAT)values('Not Met')
select * from #volume
end
end