解決: ORA-24338: 未執行語句句柄

ORA-24338: 未執行語句句柄
    這個問題主要出現在使用數據庫遊標的時候.當執行存儲過程,返回的遊標沒有打開時,可能會報這個錯。
    遊標沒有打開的情況一般是忘記了寫打開遊標的語句,也可能是存儲過程中執行出錯,導致最後遊標未打開。
如:


CREATE OR REPLACE package BODY PK_PROFU_GetMtStopTimesInfo
 
is procedure GetMtStopTimesInfo
(
     mMtName 
varchar2,
     mycs out mytype
)
as
 v_count 
int:=0;
    
begin

     
select count(1INTO v_count
     
FROM WPStopTimesInfo t,MachineTools s
                 
WHERE  s.matolname=mMtName  AND t.mtid=s.matolid;
     
if(v_count>0then
      
open mycs for  select w.matolname , v.stoptimes
                     
FROM WPStopTimesInfo v,MachineTools w
                     
WHERE  w.matolname=mMtName  AND v.mtid=w.matolid
                     
order by v.stoptimes desc ;     
     
end if;

    
END;
 
end;


當上面的變量 v_count=0 時,將出現上述錯誤.

將其修改成如下所示,問題解決.

 


CREATE OR REPLACE package BODY PK_PROFU_GetMtStopTimesInfo
 
is procedure GetMtStopTimesInfo
(
     mMtName 
varchar2,
     mycs out mytype
)
as
 v_count 
int:=0;
    
begin

     
select count(1INTO v_count
     
FROM WPStopTimesInfo t,MachineTools s
                 
WHERE  s.matolname=mMtName  AND t.mtid=s.matolid;
     
if(v_count>0then
      
open mycs for  select w.matolname , v.stoptimes
                     
FROM WPStopTimesInfo v,MachineTools w
                     
WHERE  w.matolname=mMtName  AND v.mtid=w.matolid
                     
order by v.stoptimes desc ;
      
else
        
open mycs for select mMtName as matolname,1 as stoptimes  from dual;
                     
     
end if;

    
END;
 
end;

 
分類: ORACLE
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章