Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无效的对象名称'#卷';_Sql_Sql Server_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

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