我写了一个存储过程:
create or replace procedure MyProcedure(b_id in varchar2,bpercent in number) is
begin
     update book b set b.b_price = b.b_price*(1+bpercent)
     where b.b_id = b_id;
end MyProcedure;在类里面调这个存储过程的程序如下:
procedure TFrmMain.Button1Click(Sender: TObject);
begin
  FrmDm.StoredProc.Params.ParamByName('b_id').Value :=
    ComboBox1.Text;
  FrmDm.StoredProc.Params.ParamByName('Bpercent').Value:=
    StrToFloat(edit1.Text);
  FrmDm.StoredProc.ExecProc;
  FrmDm.StoredProc.Refresh;
end;
但报 ‘PL/SQL 数字或值错误:字符到数值的转换错误’
我设置的b_id的类型是varchar2(20)
哪位高手可以帮帮我!我

解决方案 »

  1.   

    在类里面调这个存储过程的程序如下:
    procedure TFrmMain.Button1Click(Sender: TObject);
    begin
      FrmDm.StoredProc.Params.ParamByName('b_id').Value :=
        ComboBox1.Text;
      FrmDm.StoredProc.Params.ParamByName('Bpercent').Value:=
        StrToFloat(edit1.Text);
      FrmDm.StoredProc.ExecProc;
     // FrmDm.StoredProc.Refresh;  这句不要
    end;
      

  2.   

    还是发生这个
    ora-06502 pl/SQL 数字或值错误 字符到数值的转换错误
    ora-06512 在line1
    错误
      

  3.   

    还是发生这个
    ora-06502 pl/SQL 数字或值错误 字符到数值的转换错误
    ora-06512 在line1
    错误
      

  4.   

    还是发生这个
    ora-06502 pl/SQL 数字或值错误 字符到数值的转换错误
    ora-06512 在line1
    错误