已知建立了一个存储过程
create or replace procedure test_data_hzy1
 (
io_cur in out C112_DT.CurTyp
 )
 as
 begin
 open io_cur for
 select c1,c2 from test_hzy;
 end;但是在Delphi6中,我建立了一个TADOStoredProc的对象,建立时他自动在Parameter中添加了Io_cur这个参数(DataType为ftInterface,Direction为pdInputOutput),但是
当我将Active设为true的时候,报这样的错:ORA-06550:第1行,第7列:
PLS-00306:调用‘TEST_DATA_HZY'时参数数量或类型错误
ORA-06550:第1行,第7列:
PL/SQL: Statemet ignored.请问各位高手,该如何让他不报错,正确的调出结果集来

解决方案 »

  1.   

    参考:我写的一段
    create or replace procedure AutoCreateReward as
               RewardsCode varchar2(20);  
               fname varchar2(20);
               fnameStr varchar2(2000);  
    begin    
               declare                      
                 cursor cur_person is
                 select ChineseName from hr_personnelarchives where leave_flag <> 1;
                 begin
                        fnameStr:='';
            
                        open cur_person;
                        fetch cur_person into fname;    
                                 
                        while cur_person%found loop           
                          fnameStr := fname ||','||fnameStr ;  
                          fetch cur_person into fname;             
                        end loop;
                        
                        Close cur_person;
                 end;
    oracle不熟悉
    不知道{io_cur in out c112_dt.curtyp }什么意思
      

  2.   

    【楼主】:
        我想存储过程应该是没问题,弄清在delphi中如何调用才是关键。
      

  3.   

    Oracle的存储过程默认不能像MSSQL那样返回数据集的
    你如果需要要使用Oracle 的包,定义返回式游标,那样才可以将
    存储过程的数据集返回,以前有帖子讨论过,在Oracle板块和Delphi板块都有
    楼主可以搜索
      

  4.   

    但是是我的已有的那个存储过程已经是可以返回结果集的了,
    如何在delphi中定义那个返回参数parameter的属性,
    是否保持delphi倒出parameter时的默认属性就可以了?
      

  5.   

    [楼主]:
    问题已解决,要使用oracle的package,在pacakage中调用存储过程,最后在Delphi中调用那个包就可以了