在運用 insert into 表名() select * from 表名 語句插入多條數據時,如果select * from 表中沒有數據,會爆ora-01403 找不到數據。
解決辦法很容易就是將這個語句復制一下,先計算count(*)如果為0就不執行,如果>0就執行上面的語句。
ORA-24338: 未執行語句句柄
在存儲過程中用到游標的時候,如果沒有執行 open dateset(游標) for v_sql,而進行訪問返回的游標會報錯ORA-24338: 未執行語句句柄。
為什么會沒有執行 ‘open dateset(游標) for v_sql’,那是由於在存儲過程中寫有
exception
when others then
begin
DBMS_OUTPUT.PUT_LINE(SQLCODE || ' : ' || SQLERRM);
end;
end; 這樣的錯誤處理機制,在遇到類似的 ora-01403 找不到數據等錯誤時,會直接跳到此處執行錯誤處理代碼,所以
‘open dateset(游標) for v_sql’可能被忽略而又進行訪問,也就出現 ORA-24338: 未執行語句句柄了