存储过程定义:
CREATE OR REPLACE PROCEDURE E_GETCASENUM
(
 p_Result       out varchar2, 
 p_msg          out varchar2, 
 p_police       IN  VARCHAR2,
 P_NUM_TYPE     IN  VARCHAR2,
 P_NUM_NEW      OUT VARCHAR2 
)
…………………………调用的时候
  with ADOStoredProc1 do
  begin
    close;
    Parameters.Refresh;
    Prepared :=True;
    parameters.ParamByName('P_POLICE').Value := edit1.text;
    parameters.ParamByName('p_num_type').Value := Edit2.text;
    ExecProc;
    Caption := parameters.ParamByName('P_NUM_New').Value;
  end;
为什么总是报告:
parameter 对象被不正确的定义。提供了不一致或不完整的信息

解决方案 »

  1.   

    Caption := parameters.ParamByName('P_NUM_New').Value;这句先去掉。
      

  2.   

    // 在執行前、先加参数定義ADOStoredProc1.Parameters.Clear; //清空参数列表
    with ADOStoredProc1.Parameters.AddParameter do //追加入参数
    begin
      Name := 'InputName';   //your Parameter Name
      DataType := ftString;
      Direction := pdInput;  //in 
      Size := 20;
    end;
    with ADOStoredProc1.Parameters.AddParameter do //追加出参数
    begin
      Name := 'OutputName';
      DataType := ftString;
      Direction := pdOutput; //out
      Size := 30;
    end;
      

  3.   

    to:  beyondtkl(大龙驹<逝追.弗瑞德>)   我的语句还没有执行到哪里就报错了呀,怎么跟往回传参数还有关系呢?
    to: cronuz  我要是加两个参数是这么加吗?
      with DataModule1.AdoSP_Dispose do
      begin
        Name := 'P_Police';
        DataType := ftString;
        Direction := pdInput;
        Size := 20;
        Name := 'P_Num_Type';
        DataType := ftString;
        Direction := pdInput;
        Size := 20;
      end;
      

  4.   

    adocommand指向DBF:
    ADOCOMMAND1.COMMANDTEXT:='PACK 123.DBF';
    ADOCOMMAND1.EXECUTE;
      

  5.   

    to: cronuz(cronus)我每个都分别定义了一便但是还是报那个错误怎么回事呀,是不是不用在adoAdoStoredProc中定义了?但是不是前面有一个Clear吗?不懂
      

  6.   

    hehe, 顶不動了巴? 如果不介意、貼出NI的整個調用SOURCE。
      

  7.   

    哈哈、我明白了。一次只増加一個参数、NI要用5次...ADOStoredProc1.Parameters.Clear;with ADOStoredProc1.Parameters.AddParameter do //追加入参数
    begin
      Name := 'p_police';   
      DataType := ftString;
      Direction := pdInput;  //in 
      //Size := 20;
    end;
    with ADOStoredProc1.Parameters.AddParameter do
    begin
      Name := 'P_NUM_TYPE';   
      DataType := ftString;
      Direction := pdInput;  //in 
      //Size := 20;
    end;with ADOStoredProc1.Parameters.AddParameter do //追加出参数
    begin
      Name := 'p_Result';
      DataType := ftString;
      Direction := pdOutput; //out
      //Size := 30;
    end;
    with ADOStoredProc1.Parameters.AddParameter do 
    begin
      Name := 'p_msg';
      DataType := ftString;
      Direction := pdOutput; //out
      //Size := 30;
    end;
    with ADOStoredProc1.Parameters.AddParameter do 
    begin
      Name := 'P_NUM_NEW';
      DataType := ftString;
      Direction := pdOutput; //out
      //Size := 30;
    end;
    {...}