- 爱易网页
 
                        - 
                            MSSQL教程
 
                        - 存储过程出错,不能得到正确的结果?解决方法 
 
                         
                    
                    
                    日期:2014-05-18  浏览次数:20861 次 
                    
                        
                         存储过程出错,不能得到正确的结果?
现有一存储过程,如下: 
  
 if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N '[dbo].[sp_Rpt_04] ')   and   OBJECTPROPERTY(id,   N 'IsProcedure ')   =   4) 
 drop   procedure   [dbo].[sp_Rpt_04] 
 GO 
  
 SET   QUOTED_IDENTIFIER   OFF    
 GO 
 SET   ANSI_NULLS   OFF    
 GO 
  
 create   procedure   sp_Rpt_04 
       @cust   varchar(255), 
       @dates   datetime, 
       @datee   datetime 
 as    
  
 set   nocount   on 
  
 if   @dates= ' ' 
       set   @dates= '1900-01-01 ' 
 if   @datee= ' ' 
       set   @datee= '2010-01-01 ' 
  
 create   table   #tmp1 
    ( 
          fcust   varchar(255),   --客户名称 
          fname1   varchar(255),--商品名称 
          fname2   varchar(255),--计量单位 
          fsum   decimal(28,0),--发出数量 
          famount   decimal(28,0)--金额 
 ) 
  
 insert   into   #tmp1   (fcust,fname1,fname2,fsum,famount) 
             SELECT          
                   t5.fname      as    '客户名称 ', 
                   t3.fname   as    '商品名称 ',                   
                   t4.FName   AS    '计量单位 ', 
                   sum(t2.fqty)   as    '发出数量 ', 
                   sum(t2.famount)   as    '金额 ' 
 FROM   ICStockBill   t1,ICStockBillentry   t2,t_ICItem   t3,t_MeasureUnit   t4,t_item   t5 
 WHERE   t1.FInterID=t2.FInterID 
 AND   t2.FItemID=t3.FItemID 
 AND   t4.FItemID=t3.FUnitID 
 AND   t1.ftrantype=21 
 and   t1.fsupplyid=t5.fitemid    
 AND   t1.fdate   > =@dates      and   t1.fdate <=@datee 
 and   t5.fname   like       '% '   +   @Cust   +    '% ' 
 GROUP   BY   t3.fname,t4.fname,t5.fname 
  
  
 select    
          fcust   as    '客户名称 ', 
          fname1   as    '商品名称 ', 
          fname2   as    '计量单位 ', 
          sum(fsum)   as    '发出数量 ', 
          sum(famount)   as    '总金额 ' 
 from   #tmp1 
 group   by   fcust,fname1,fname2,fsum,famount 
  
 Drop   Table   #tmp1 
  
 SET   NOCOUNT   OFF 
 GO 
 SET   QUOTED_IDENTIFIER   OFF    
 GO 
 SET   ANSI_NULLS   ON    
 GO 
 执行后再重新执行时提示:服务器:   消息   2714,级别   16,状态   5,过程   sp_Rpt_04,行   53 
 数据库中已存在名为    'sp_Rpt_04 '   的对象。 
  
 而且我查询得到的结果是按客户来汇总数量和金额,但是现在没有得到这个结果。 
 希望高手指点,非常感谢! 
 解决后立刻揭贴! 
  
------解决方案--------------------
最前面那个语句改改试试! 
 IF EXISTS (SELECT name FROM sysobjects 
       WHERE name =  'sp_Rpt_04 ' AND type =  'P ') 
    DROP PROCEDURE sp_Rpt_04 
 GO 
------解决方案--------------------