有一個存粗過程, 一個為 INPUT的 參數DATA , 一個是OUTPUT的參數 RES,
如下寫掉用的代碼!
老報錯, '提供不一致或不完全的參數..............', 是不是
在INPUT 合 OUTPUT 之間要註明亞ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName:='CHECK_EMP';
ADOStoredProc1.Parameters.Refresh;
DDD:=ADOStoredProc1.Parameters.ParamByName('RES').Value;
ADOStoredProc1.open;  //在這裡報錯
EDIT1.TEXT:=ADOStoredProc1.Parameters.ParamByName('RES').Value;

解决方案 »

  1.   

    我也遇见过,你可以不用自己定义一个参数,可以把Adostoredproc1直接连接
    上数据库,然后参数就会自动显示在参数列表中,好像Adostoredproc1的参数有一个是系统默认的,多试试,我第一次写存储过程的时候调了整整一天,问题和你的差不多,如果还不能解决,我会发个我写的例子给你
      

  2.   

    ADOStoredProc1.Close;
    ADOStoredProc1.ProcedureName:='CHECK_EMP';
    ADOStoredProc1.Parameters.Refresh;
    ADOStoredProc1.open;  //在這裡報錯
    EDIT1.TEXT:=ADOStoredProc1.Parameters.ParamByName('RES').Value;還是不行, 發給例子給我把,  [email protected]
    謝謝!
      

  3.   

    oracel 存初過程如下:
    PROCEDURE CHECK_EMP(DATA IN VARCHAR2,
    RES OUT VARCHAR2) IS
    C_EMP VARCHAR2(25);
    BEGIN
       SELECT EMP_NO INTO C_EMP FROM SFIS1.C_EMP_DESC_T
          WHERE EMP_NO = DATA
    AND ROWNUM = 1;
       RES:='OK';
    exception
       when others then
          RES:=' NO EMP';
    END;
    ADOStoredProc1.ProcedureName:='CHECK_EMP';
    ADOStoredProc1.Parameters.ParamByName('DATA').Value:='P29139';
    ADOStoredProc1.open  
    //報如下錯  ''ADOStoredProc1.command Text does not return a result set '' 改成ADOStoredProc1.Close;
    ADOStoredProc1.ProcedureName:='CHECK_EMP';
    ADOStoredProc1.Parameters.Refresh;
    ADOStoredProc1.Parameters.ParamByName('DATA').Value:='P29139';
    ADOStoredProc1.open; // 報如下錯  ''提供不一致的或不完全的資訊導致參數物件不適當的被拒''各位好漢, 拔刀相助一下吧!
      

  4.   

    存初過程不能直接用open 只能exec..执行
    或者存初過程中有select * from tablename 的语句
      

  5.   

    with adostoredproc1 do begin
        close;
        prepared:=false;
        ProcedureName:='GetCounter' ;
        parameters.Clear;
        with parameters.AddParameter do begin
          name:='@TableName';
          DataType:=ftString;
          Direction:=pdInput;
          Value:='Test';
        end;
        with parameters.AddParameter do begin
          name:='@Counter';
          DataType:=ftInteger;
          Direction:=pdOutput;
        end;
        prepared:=true;
        ExecProc;
    //如果要返回一个数据集则使用下列二行代码
    //    DataSource1.dataset:=ADOStoredProc1;
    //    ADOStoredProc1.open;       //必须使用OPEN方法
      end;
      

  6.   

    调用存储过程,只能用EXEC,不能用OPEN。