本處以調試函數為例,其他的調試與此相同
1.調試位置
通常情況下,要在pl/sql Dev中調試程序有兩個地方:
1).新建->測試窗口:
2).在要調試的程序上點擊右鍵->測試
2.調試過程
1).通過調試位置進入測試窗口,如下圖:
其中:點擊1位置(或者按F9)進入調試器,2位置顯示的是程序所聲明的輸入輸出參數,如果是輸入參數,需要在此處填入相應的輸入值,輸出參數會在執行調試完后顯示。
2).按F9進入開始調制器,如圖所示:
其中:1----中斷調試,2----單步調試,簡單點就是一步一步的執行;綠色的箭頭表示全部運行完這個程序,如果有斷點設置,也可以跳入到下一個斷點。
3).單擊單步調試,進入函數,如圖
在此,可以嘗試單步調試,一步一步運行程序
4).設置斷點,如圖
在文本區域最左側的邊框進行左鍵單擊,如果有行號顯示,也就是行號所在的位置,如圖:
點擊綠色的箭頭,可以直接運行到設置斷點處
5).對變量進行監控,如圖
1位置為監控窗口,這個窗口可以把你要監視的變量進行顯示,你把你需要監視的變量復制到這個窗口就可以了,也可以在變量上單擊右鍵->添加變量到監視器(位置2)。
繼續單步執行,可以看到監控變量(位置3)值的變化。
3.權限問題(ORA-0131)
1)調試程序時,報錯為ORA-0131:Insufficient privileges,如圖:
原因是用戶權限不夠,是缺失 DEBUG CONNECT SESSION 系統權限所致
2)解決辦法:以SYS用戶登錄數據庫,執行賦權操作:
1 SQL> grant DEBUG CONNECT SESSION to user_name;
注明:1.有網友指出還需賦予DEBUG ANY PROCEDURE的權限,經測試,該權限可不用賦予!
2.可以從數據字典session_privs表查看該權限相關信息(需要以user_name登錄):
1 SQL>conn scott/tiger; 2 SQL> select * from session_privs; 3 PRIVILEGE 4 ---------------------------------------- 5 CREATE SESSION 6 UNLIMITED TABLESPACE 7 CREATE TABLE 8 CREATE CLUSTER 9 CREATE SEQUENCE 10 CREATE PROCEDURE 11 CREATE TRIGGER 12 CREATE TYPE 13 CREATE OPERATOR 14 CREATE INDEXTYPE 15 DEBUG CONNECT SESSION 16 DEBUG ANY PROCEDURE 17 12 rows selected