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; // 報如下錯 ''提供不一致的或不完全的資訊導致參數物件不適當的被拒''各位好漢, 拔刀相助一下吧!
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; // 報如下錯 ''提供不一致的或不完全的資訊導致參數物件不適當的被拒''各位好漢, 拔刀相助一下吧!
ADOStoredProc1.ProcedureName:='CHECK_EMP';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('DATA').Value:='P29139';
ADOStoredProc1.Parameters.ParamByName('RES').Value:='OK';
ADOStoredProc1.open;我加上去还是不行呀? 输出参数也要付初值吗, 还是报同样的错误
‘提供不一致的或不完全的資訊導致參數物件不適當的被拒''
’
ADOStoredProc1.Close;
ADOStoredProc1.ADOcommand.commandtext='exec check_emp 'p29139','OK'';
ADOStoredProc1.ADOcommand.execute;
用execute,看行不行?
發個例子亞,書上的方法都試了,沒用, 存處過程沒問題的
用BDE可以調用的
把in 和 out 都去掉试试。
或者把RES OUT VARCHAR2定义在内部,
declare @ res varchar(2)试试,
调用时只用一个函数。