當前位置:首頁 » 服務存儲 » 存儲過程異常定位
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲過程異常定位

發布時間: 2022-03-08 08:56:09

A. 如何在sql存儲過程中處理錯誤

首先,把寫好的存儲過程執行檢查,看看是否報錯;
其次,如果報錯的話,就看看提示什麼錯誤,定位到錯誤的位置,修正它;
再次,就是運行檢查,如此按照以上的步驟反復驗證。

另外,需要技巧的是,有時候很長的存儲過程,需要逐步和分段分別執行調試。

B. 調用存儲過程出現ORA-01403: 未找到數據。高分求高手,急!!!!!

請參照以下步驟:
1、根據PLSQL提示的錯誤行數定位到具體報錯的那一行代碼
2、查看該行代碼是否有select .. into ...
3、修改程序兼容select 不到數據的情況,可以加max(),或者nvl(ksks,'默認值')之類的,這樣就不會
報no data found exception了。

C. oracle語句在sql navigator中執行,報錯後如何查找錯誤位置以及怎麼快捷跳轉到下一處錯誤

其實好像沒你說的那麼智能

首處錯誤的話,滑鼠的游標會指向錯誤位置,然後你修改後,再運行時,錯誤才會指向下一處,而且,經過我多次觀察,有時候的錯誤位置並不是十分正確,所以有時只能根據報的錯誤代碼來確定到底是什麼錯誤了

--------
你這是存儲過程里的錯誤吧?
代碼不長的話,發上來看看

D. oracle如何捕獲存儲過程報錯是哪一行

如果資料庫是10g及以上版本,可以使用dbms_utility.format_error_backtrace(),這個函數能夠返回錯誤行,可以套用以下格式:
create or replace procere prc_test(參數) is
v_no number;
begin
select no into v_no from zrp;
exception
when others then
dbms_output.put_line('SQL CODE:'||sqlcode||chr(10)||
sqlerrm||chr(10)||
dbms_utility.format_error_backtrace());
end;
這樣寫的好處是,當程序發成異常,唄exception捕獲後,就會列印出錯誤信息及發生錯誤的行號

E. 在PLSQL中測試存儲過程時,會報如下錯誤,怎麼辦~

按錯誤提示,定位到存儲過程出錯的行數,仔細檢查問題所在,並修改。再執行就沒問題了。

F. 急!急!急!Oracle 資料庫的一個欄位每天凌晨2點多會定時被一個存儲過程修改,請高手指點我該怎樣定位

會不會是某個觸發器裡面, 調用了 rbt_admin_browsecat ?
或者是 某個 job 的 存儲過程, 調用了 rbt_admin_browsecat

如果你知道 問題大約發生在 每天凌晨2點多.
那麼你可以先去看看 dba_jobs 視圖去看看。 看看有什麼 job 是 2點多執行的。
然後再看看, 這個時間裡面, 都有哪些存儲過程被執行了。

然後去看看, 這些存儲過程裡面, 有誰調用了 rbt_admin_browsecat

G. 存儲過程嵌套怎麼定位輸出錯誤的地方

SQL> CREATE SEQUENCE test_sequence2 2 increment by 1 -- 每次遞增1 3 start with 1 -- 從1開始 4 nomaxvalue -- 沒有最大值 5 minvalue 1 -- 最小值=1 6 NOCYCLE;序列已創建。SQL> -- 下一個序列號SQL> SELECT test_sequence2.nextval FROM

H. 這個存儲過程哪裡錯了

你的建表語句中所有的中文名稱都加了單引號。但是本身這個建表語句就是一個字元串,兩端有單引號了。所以你需要在語句中對每個中文名稱兩端的單引號進行轉義。
比如:
select attributevalue from samplegroupdetail sl2 where sl2.attributename='''生產廠家'''
and sl2.samplegrouppid=re.samplegrouppid and sl2.samplegroupdetailpid=re.samplegroupid
其他的都改成這樣就行了。
還有,你提問題時,最好吧錯誤提示發出來,方便定位。你的資料庫上的表回答的人是沒有的。只能憑經驗來看,沒有報錯提示會很困難。還有你上次存儲過程的問題也是我回答的。你的追問看不懂,組織一下語言吧。

I. oracle錯誤行定位

寫個存儲過程,讓它拋出exception,
假設有個表t,有一列字元型cola,存儲的是日期格式,還有一列或幾列是主鍵,能唯一確定這行數據的列 p,相當於你說的rowid
set serverout on size 999999
declare
dt date;
begin
for x in (select cola,p from t) loop
begin
dt := to_date(x.colA,'yyyy-mm-dd hh24:mi:ss');

exception when others then
dbms_output.put_line(x.p);
end;
end loop;
end;
/
--存儲過程遍歷整個表,將字元型日期格式的cola列取出做格式轉換,如格式不正確,會列出是哪一行不正確,這個方法笨了些,但可以解決問題