本人在SQL SERVER2000中写了这样的一个存储过程,在查询分析器中正确运行无误,但是在Delphi中调用该存储过程是就出现错误,存储过程的代码如下:
use cumtkj
goif exists (select * from sysobjects where id = object_id('sp_kaipiao')) 
drop procedure sp_kaipiao
GOSET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GOCREATE PROC sp_kaipiao(
@bno VARCHAR(20),
@fpleibie VARCHAR(20),
@note VARCHAR(50),
@kaipiaodate SMALLDATETIME,
@kaipiaomoney float,
@kaipiaomen VARCHAR(50),
@jimaomoney VARCHAR(50),
@zhengzhishuimoney VARCHAR(50),
@caizhengmoney VARCHAR(50)
)
ASBEGIN TRAN 
DECLARE @newtotal1 float,
        @newtotal2 float,
        @newtotal3 float,
        @T1 FLOAT,
        @T2 FLOAT,
        @T3 FLOAT SELECT DISTINCT @newtotal1=CAST(jmkpxj as float) ,@newtotal2=CAST(czkpxj AS float),@newtotal3=CAST(zzskpxj as float)
FROM kfb_fpkl
WHERE bh=@bno SELECT  @T1= CAST(@jimaomoney as float)
 SELECT  @T2= CAST(@caizhengmoney as float)
 SELECT  @T3= CAST(@zhengzhishuimoney as float) SET  @newtotal1=@newtotal1+@T1
 SET  @newtotal2=@newtotal2+@T2
 SET  @newtotal3=@newtotal3+@T3
SET @newtotal1=CAST( STR(@newtotal1,7,2) AS VARCHAR(50))
SET @newtotal2=CAST( STR(@newtotal2,7,2) AS VARCHAR(50))
SET @newtotal3=CAST( STR(@newtotal3,7,2) AS VARCHAR(50))
UPDATE kfb_fpkl
SET jmkpxj=@newtotal1,
    czkpxj=@newtotal2,
    zzskpxj=@newtotal3
WHERE bh=@bno
IF(@@error<>0)GOTO ON_ERRORINSERT INTO kfb_fpkl
VALUES(@bno,@fpleibie,@note,@kaipiaodate,@kaipiaomoney,@kaipiaomen,@newtotal1,@newtotal3,@newtotal2)
IF(@@error<>0)GOTO ON_ERROR  COMMIT TRAN
  RETURN 1ON_ERROR:
  ROLLBACK TRAN
  RETURN -1GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GOEXEC sp_kaipiao '2003-06-050','财政','科研费','2004-7-2',4 ,'屠世浩','0.00','0.00','4.00'
delphi中调用存储过程的代码如下:
     try
       if (Edit17.Text='') then Edit17.Text:='0.00';
       if (Edit18.Text='') then Edit18.Text:='0.00';
       if (Edit19.Text='') then Edit19.Text:='0.00';
       DMc.Dataupdate;
       DM.kfb_msgadd.Active :=false;
       DM.kfb_msgadd.Prepared :=false;
       DM.kfb_msgadd.Parameters.Items[1].Value :=Trim(edit12.Text);
       DM.kfb_msgadd.Parameters.Items[2].Value :=combobox10.Text;
       DM.kfb_msgadd.Parameters.Items[3].Value :=Trim(edit13.Text);
       DM.kfb_msgadd.Parameters.Items[4].Value :=StrToDateTime(dt1);
       DM.kfb_msgadd.Parameters.Items[5].Value :=StrToFloat(Trim(edit16.Text));
       DM.kfb_msgadd.Parameters.Items[6].Value :=Trim(Edit14.Text);
       DM.kfb_msgadd.Parameters.Items[7].Value :=Edit17.Text;
       DM.kfb_msgadd.Parameters.Items[8].Value :=Edit18.Text;
       DM.kfb_msgadd.Parameters.Items[9].Value :=Edit19.Text;
       DM.kfb_msgadd.Prepared :=true;
       DM.kfb_msgadd.ExecProc();
     e:=DM.kfb_msgadd.Parameters.Items[0].Value;
     if e<>1 then
     begin
     DM.kfb_msgadd.Cancel;
     exit;
     end;
出现错误提示为:project project1.exe raised exception class EoleException with message'应用程序在当前操作中使用了错误类型的值。'...
高手指点,为什么会出现这样的情况。