我创建了一个返回结果集的存储过程,编译可以通过。但程序执行时出现如下错误:
 System.Data.OracleClient.OracleException: ORA-24338: 未执行语句句柄 
我在网上找了一些资料,说游标没有打开,或语句执行过程中出错导致游标没有打开。
我有些不明白。我明明open了呀,还有,如果编译通过的话,语句执行会出错吗?最多也就是没有返记录吧,为什么会出异常呢?
下面是我的存储过程创建包:
CREATE OR REPLACE  PACKAGE TAIXIS  as
TYPE myrctype IS REF CURSOR;
procedure list_getTaixis(result out myrctype);
end Taixis;
包体:
CREATE OR REPLACE  PACKAGE BODY TAIXIS as
procedure list_getTaixis(result out myrctype)
is
begin
 declare 
 aTime date;
 Race_ID int;
 Race_Name varchar(200);
 bTime date;
 Paper_ID int;
 Paper_Name varchar(200);
 begin
 select c.Paper_ID, c.BTime,c.Paper_Name  into Paper_ID ,bTime,Paper_Name from 
 (select a.Paper_ID,a.BTime,a.Paper_Name,b.Grade_ID from PAPER_INFO a , USER_GRADE b  where a.Paper_ID=b.Paper_ID and a.Show_Grade=1 and a.Paper_Type=1 and rownum=1 and b.Grade_Mode=1) c 
 order by c.BTime Desc;
 select c.Race_ID,c.BTime,c.Race_Name into Race_ID,aTime,Race_Name from (Select a.Race_ID,a.BTime,a.Race_Name,b.Grade_ID from RACE_IN_INFO a ,USER_RACE_GRADE b where a.Race_ID=b.Race_ID and a.Show_Grade=1) c where rownum=1 order by c.BTime desc;
 if nvl(aTime,'1980-01-01')<nvl(bTime,'1980-01-01') then 
 open result for
 select User_id ,realname, (grade_auto+grade_manual) as MarkOrPass,0,Paper_Name from user_grade where paper_id=Paper_ID and rownum<=10 order by (grade_auto+grade_manual) desc;
 else
 open result for
 select User_ID,RealName,Pass_Paper as MarkOrPass,1,Race_Name as PaperOrRace from user_race_grade where Race_ID=Race_ID and rownum<=10 order by Pass_Paper desc,Pass_Subject desc;
 end if;
end;
end;
end Taixis;