日期:2014-05-18  浏览次数:20702 次

存储过程出错,不能得到正确的结果?
现有一存储过程,如下:

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

------解决方案--------------------