有一個存粗過程, 一個為 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;
如下寫掉用的代碼!
老報錯, '提供不一致或不完全的參數..............', 是不是
在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;
上数据库,然后参数就会自动显示在参数列表中,好像Adostoredproc1的参数有一个是系统默认的,多试试,我第一次写存储过程的时候调了整整一天,问题和你的差不多,如果还不能解决,我会发个我写的例子给你
ADOStoredProc1.ProcedureName:='CHECK_EMP';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.open; //在這裡報錯
EDIT1.TEXT:=ADOStoredProc1.Parameters.ParamByName('RES').Value;還是不行, 發給例子給我把, [email protected]
謝謝!
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; // 報如下錯 ''提供不一致的或不完全的資訊導致參數物件不適當的被拒''各位好漢, 拔刀相助一下吧!
或者存初過程中有select * from tablename 的语句
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;