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; // 報如下錯  ''提供不一致的或不完全的資訊導致參數物件不適當的被拒''各位好漢, 拔刀相助一下吧!

解决方案 »

  1.   

    ADOStoredProc1.Close;
    ADOStoredProc1.ProcedureName:='CHECK_EMP';
    ADOStoredProc1.Parameters.Refresh;
    ADOStoredProc1.Parameters.ParamByName('DATA').Value:='P29139';
    ADOStoredProc1.Parameters.ParamByName('RES').Value:='OK';
    ADOStoredProc1.open;我加上去还是不行呀? 输出参数也要付初值吗,  还是报同样的错误
    ‘提供不一致的或不完全的資訊導致參數物件不適當的被拒''
      

  2.   

    这样也行。
    ADOStoredProc1.Close;
    ADOStoredProc1.ADOcommand.commandtext='exec check_emp 'p29139','OK'';
    ADOStoredProc1.ADOcommand.execute;
      

  3.   

    .value 改为ASSTRING;
    用execute,看行不行?
      

  4.   

    我搞不定了,要被fire 掉了, 有誰用ADO調用過存儲過程,\
    發個例子亞,書上的方法都試了,沒用, 存處過程沒問題的
    用BDE可以調用的
      

  5.   

    RES OUT VARCHAR2 怎么还 RES:=' NO EMP'
    把in 和 out 都去掉试试。
    或者把RES OUT VARCHAR2定义在内部,
    declare @ res varchar(2)试试,
    调用时只用一个函数。