存储过程创建如下:
CREATE procedure writeBankBill
(
@AccountNo varchar(50),
@AccountName varchar(50),
@DealDate Datetime,
@Debit varchar(50),
@Lend varchar(50)
)
AS
insert into BankBill(AccountNo, AccountName, DealDate, Debit, Lend) 
values(@AccountNo, @AccountName, @DealDate, @Debit, @Lend)
GO
存储过程调用如下:var
   AccountNo, AccountName: String;
   DealDate : TDatetime;
   Debit, Lend:  String;
            DealDate:= StrToDate('2007-03-03');
            Debit:= Trim('123');             
            Lend:= Trim('123'); 
            AccountName:= Trim('123'); 
            AccountNo:= Trim('123'); 
with DModule.Strpre do
begin
            Close;
            Parameters.ParamByName('@DealDate').Value := DealDate;
            Parameters.ParamByName('@AccountNo').Value := AccountNo;
            Parameters.ParamByName('@AccountName').Value := AccountName;
            Parameters.ParamByName('@Lend').Value := Lend;
            Parameters.ParamByName('@Debit').Value := Debit;
            ExecProc;end;

解决方案 »

  1.   

    系统老提示出错误: 不允许从数据类型 Money 到 Varchar的阴性转换,请使用 Convert 函数来运行此查询.
    表设计如下:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BankBill]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[BankBill]
    GOCREATE TABLE [dbo].[BankBill] (
    [SquNum] [int] IDENTITY (1, 1) NOT NULL ,
    [DealDate] [datetime] NOT NULL ,
    [Debit] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Lend] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [AccountName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [AccountNo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO
      

  2.   

    请高手帮忙 本人在查询分析器中已经测试过
    exec  writeBankBill @AccountNo ='123',
    @AccountName ='123',
    @DealDate ='2007-03-02',
    @Debit ='123',
    @Lend ='123'
    可以执行 没有错误的 
      

  3.   

    Parameters.ParamByName('@DealDate').AsDate:= DealDate;
    Parameters.ParamByName('@AccountNo').AsString:= AccountNo;
    Parameters.ParamByName('@AccountName').AsString := AccountName;
    Parameters.ParamByName('@Lend').AsString := Lend;
    Parameters.ParamByName('@Debit').AsString := Debit;
      

  4.   

    to:chenzhuo(Jack Chen) 
    你说的好像编译通不过啊 兄弟! 谢谢 你了!
      

  5.   

    没看到你哪里出现money类型数据;
    你单步调试,跟踪一下看具体出错的语句
      

  6.   

    就是在 Execproc的时候 出的错误 我都写了最简单的测试了
             with DModule.Strpre do
             begin
                Close;            Parameters.ParamByName('@DealDate').Value := '2007-03-02';
                Parameters.ParamByName('@AccountNo').Value := '13213';
                Parameters.ParamByName('@AccountName').Value := '13213';
                Parameters.ParamByName('@Lend').Value := '13213';
                Parameters.ParamByName('@Debit').Value := '13213';            ExecProc;         end;
      

  7.   

    Parameters.ParamByName('@DealDate').Value := '2007-03-02';
    这一句有问题吧,StrToDate('2007-03-02');
      

  8.   

    TO: chenzhuo(Jack Chen) 
    还是不行啊 兄弟 谢谢你了啊 !
      

  9.   

    解决 答案见
    http://community.csdn.net/Expert/topic/5438/5438885.xml?temp=.2847101