ADOStoredProc调用Oracle的存储过程一直报错解决思路

ADOStoredProc调用Oracle的存储过程一直报错
使用ADOStoredProc调用Oracle的存储过程,调用的时候总是报参数类型或者数量错误PLS-00306,但是我反复看了代码,类型跟数目都没问题,真是费解啊,请各位大侠帮忙看看到底问题出在哪里。
另:存储过程里最后一个输出参数是游标类型的,这种类型的参数在ADOStoredProc里怎么处理?
报错截图:
ADOStoredProc调用Oracle的存储过程一直报错解决思路
调用的代码:
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,