ADOStoredProc调用Oracle的存储过程一直报错解决思路
ADOStoredProc调用Oracle的存储过程一直报错
使用ADOStoredProc调用Oracle的存储过程,调用的时候总是报参数类型或者数量错误PLS-00306,但是我反复看了代码,类型跟数目都没问题,真是费解啊,请各位大侠帮忙看看到底问题出在哪里。
另:存储过程里最后一个输出参数是游标类型的,这种类型的参数在ADOStoredProc里怎么处理?
报错截图:
调用的代码:
procedure TForm1.btnRun2Click(Sender: TObject);
begin
ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName := 'MY_TEST';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('first_no').Value := 1000;
ADOStoredProc1.Parameters.ParamByName('second_way').Value := '4';
ADOStoredProc1.Parameters.ParamByName('station').Value := '00';
ADOStoredProc1.Parameters.ParamByName('user_no').Value :='uo000325';
ADOStoredProc1.Parameters.ParamByName('password').Value := '1';
ADOStoredProc1.Parameters.ParamByName('second_no').Value := 88;
ADOStoredProc1.Parameters.ParamByName('request_no').Value := 50;
ADOStoredProc1.Parameters.ParamByName('page_no').Value := 1;
//ADOStoredProc1.Parameters.ParamByName('my_cursor').Value := 0;
ADOStoredProc1.Open;
ADOStoredProc1.Active := True;
ADODataSet1.Recordset := ADOStoredProc1.Recordset;
ADODataSet1.First;
while not ADODataSet1.Eof do
begin
Memo1.Lines.Add(ADODataSet1.fields.fieldbyName('serial_no').Value);
ADODataSet1.Next;
end;
end;
存储过程接口为:
prompt create function 'MY_TEST' ...
create or replace function MY_TEST
(
first_no mytype.MyFirstNo%type,
second_way mytype.MyType%type,
station mytype.MyStation%type,
user_no mytype.MyUserNo%type,
password mytype.MyPassword%type,
second_no mytype.MySecondNo%type,
使用ADOStoredProc调用Oracle的存储过程,调用的时候总是报参数类型或者数量错误PLS-00306,但是我反复看了代码,类型跟数目都没问题,真是费解啊,请各位大侠帮忙看看到底问题出在哪里。
另:存储过程里最后一个输出参数是游标类型的,这种类型的参数在ADOStoredProc里怎么处理?
报错截图:
调用的代码:
procedure TForm1.btnRun2Click(Sender: TObject);
begin
ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName := 'MY_TEST';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('first_no').Value := 1000;
ADOStoredProc1.Parameters.ParamByName('second_way').Value := '4';
ADOStoredProc1.Parameters.ParamByName('station').Value := '00';
ADOStoredProc1.Parameters.ParamByName('user_no').Value :='uo000325';
ADOStoredProc1.Parameters.ParamByName('password').Value := '1';
ADOStoredProc1.Parameters.ParamByName('second_no').Value := 88;
ADOStoredProc1.Parameters.ParamByName('request_no').Value := 50;
ADOStoredProc1.Parameters.ParamByName('page_no').Value := 1;
//ADOStoredProc1.Parameters.ParamByName('my_cursor').Value := 0;
ADOStoredProc1.Open;
ADOStoredProc1.Active := True;
ADODataSet1.Recordset := ADOStoredProc1.Recordset;
ADODataSet1.First;
while not ADODataSet1.Eof do
begin
Memo1.Lines.Add(ADODataSet1.fields.fieldbyName('serial_no').Value);
ADODataSet1.Next;
end;
end;
存储过程接口为:
prompt create function 'MY_TEST' ...
create or replace function MY_TEST
(
first_no mytype.MyFirstNo%type,
second_way mytype.MyType%type,
station mytype.MyStation%type,
user_no mytype.MyUserNo%type,
password mytype.MyPassword%type,
second_no mytype.MySecondNo%type,