日期:2014-05-17  浏览次数:20612 次

有关存储过程调用.
包头:
create   or   replace   package   system.select_table   is
    type   tab_04   is   record(
        itnum_1   varchar2(1),
        itnum_2   varchar2(1),
        itnum_3   varchar2(1),
        itnum_4   varchar2(1));
    type   tab_05   is   record(
        itnum_1   varchar2(1),
        itnum_2   varchar2(1),
        itnum_3   varchar2(1),
        itnum_4   varchar2(1),
        itnum_5   varchar2(1));
type   cur_4   is   ref   cursor   return   tab_04;
type   cur_5   is   ref   cursor   return   tab_05;
end   select_table;

我建的存储过程:
create   or   replace   procedure   student_grade
(cur   out   select_table.cur_4)
as
begin
    open   cur   for
    select   xs.xh,xs.xm,kc.kcm,xs_kc.cj   from   xs,xs_kc,system.kc
    where   xs.xh=xs_kc.xh   and   xs_kc.kch=kc.kch;
    commit;
end   student_grade;

调用过程时出错(以上内容都正确建立):
begin
student_grade;       /*调过 "student_garde "时参数个数或类型出错*/
end;

请问怎么调用存储过程,我写的可能不对。我不知道正确的应该怎么写。


------解决方案--------------------
student_grade

有一个输出参数
存储过程调用的时候,参数个数要与定义时相同

declare
v_cur select_table.cur_4;
begin
student_grade(v_cur); /*调过 "student_garde "时参数个数或类型出错*/
end;

------解决方案--------------------
你的第二个过程只能取出一条记录