with TADOStoredProc.Create(Application) do
  begin
    Connection := dmPublic.connPublic;
    ProcedureName := 'CAR.PKG_SYS_TRANSIT.F_SET_SYS_STAFF';    //设置过程参数类型
    Parameters.Clear;
    with Parameters.AddParameter do
    begin
      Name := 'RETURN_VALUE';
      DataType := ftString;
      Direction := pdReturnValue;
    end;
    with Parameters.AddParameter do
    begin
      Name := 'pi_Staff_Id';
      DataType := ftString;
      Direction := pdInput;
    end;
    with Parameters.AddParameter do
    begin
      Name := 'pi_Staff_Name';
      DataType := ftString;
      Direction := pdInput;
    end;
    with Parameters.AddParameter do
    begin
      Name := 'pi_Dept_Id';
      DataType := ftString;
      Direction := pdInput;
    end;
    with Parameters.AddParameter do
    begin
      Name := 'pi_Dept_Name';
      DataType := ftString;
      Direction := pdInput;
    end;
  
  //设置参数值
    Parameters.ParamValues['pi_Staff_Id'] := edtStaffId.Text;
    Parameters.ParamValues['pi_Staff_Name'] := edtStaffName.Text;
    Parameters.ParamValues['pi_Dept_Id'] := cbDepartment.Value;
    Parameters.ParamValues['pi_Dept_Name'] := cbDepartment.Text;    try
      try
        ExecProc;
        gp_Show_Msg(Parameters.ParamByName('RETURN_VALUE').Value);
      except
        on E:Exception do
          gp_Show_Msg('很抱歉,用户保存失败,请检查数据是否有效或网络是否     畅通' + #13#13 + E.Message);
      end;
    finally
      free;
    end;
  end;执行提示:不正常地下定义参数对象,提供不一致或不完整的信息!!!检查参数信息与oracle包中的函数中的一样,请问是什么原因!!!

解决方案 »

  1.   

    不知楼主的存储过程怎么写的,没法测试,但有一点是肯定的,ado对oracle的支持不是很好,经常会有莫名的问题,以前回过多贴,最近的为
    http://community.csdn.net/Expert/topic/5181/5181888.xml?temp=.2923242
    对oracle最好的数据引擎为odac,其次为odbc,然后是bde,(dbexpress for oracle没用过)
    检查你的参数,升级mdac,更换ado引擎(Microsoft OLE DB Provider for oracle或Oracle Provier for OLE DB)有条件的话,更换数据库引擎
      

  2.   

    问题找到了,发现是返回参数没有设置其大小,即 with Parameters.AddParameter do
        begin
          Name := 'RETURN_VALUE';
          DataType := ftString;
          Direction := pdReturnValue;
        end;
    改成:
     with Parameters.AddParameter do
        begin
          Name := 'RETURN_VALUE';
          DataType := ftString;
          Direction := pdReturnValue;
          Size := 200;
        end;
    就行,,,谢谢楼上的,odac我知道是专门为oracle写的一个控件,现在最新是多少?我下了个5.5的,安装不了,少了一个什么文件!
      

  3.   

    试试这个:
    http://www.delphibox.com/article.asp?articleid=3109