圖解如何在PLSQL中調試PACKAGE包中的FUNCTION函數

Oracle中的packages包是一組包含procedures存儲過程、functions函數和遊標等元素的組合。相比Sybase數據庫的SQL Advantage工具,Oracle數據庫的管理工具——PLSQL在調試存儲過程還是方便。

PLSQL Developer調試packages包

1 Oracle數據庫中的packages包、functions函數和procedures存儲過程的關係

Oracle數據庫中的packages包類似於Java中的packages的概念,在一個packages包中不允許定義多個相同的functions函數或者procedures存儲過程,但允許重載functions方法和procedures過程。packages包是可以被引用的,例如在C程序中調用packages包中的functions方法:

sprintf( SqlStr, "select pkg_Name.Func_Name('%s', '%s', '%d') as RESULT from dual ", sPara1, sPara2, sPara3 );

2 在PLSQL中調試packages包中functions函數

下面是自己在PL/SQL Developer Version 8.0中調試一個packages包中functions函數的演示過程:

2.1 在PLSQL中找到需要調試的packages包

如下圖所示,展開PLSQL左側菜單欄的Packages收縮項,可以看到下面的Packages包名,這裏只有一個名爲PKG_COMM的包(包括包頭和包體Package bodies)。

在PLSQL中找到需要調試的packages包

2.2 切換到“調試”模式

在Packages包名上,右鍵選擇添加調試信息,如下圖所示:

在PLSQL中找到需要調試的packages包

2.3 雙擊需要調試的Packages包

查看packages包中具體的內容:鼠標雙擊PLSQL左側的packages包名(PKG_COMM),可以看到它包含的Functions函數Get_counter和函數的3個形參變量(Pi_cnttype、Pi_Cntobj和Pi_Nowdate)。

雙擊需要調試的存儲過程

2.4 添加測試斷點(BreakPoint)

鼠標雙擊這個函數名Get_counter後,會在右側顯示該函數的具體實現代碼。接着在需要添加斷點的地方,用鼠標點擊代碼左側的行號位置就行了。如下圖所示,紅色的小圓圈就是添加BreakPoint。

雙擊需要調試的存儲過程

2.5 在functions函數上右鍵選擇測試按鈕

完成上面的工作後,就可以正式進入Debug模式了。在函數名Get_counter選項上鼠標右鍵選擇測試菜單,進入Package調試模式。

在functions函數上右鍵選擇測試按鈕

2.6 把實參變量的值傳給functions函數的形參變量

在2.5步驟中,會打開如下圖的初始調試界面。這時,我們看到的是包頭的實現代碼(每個Package包都是從包頭聲明開始的)。可以先給函數Get_counter的3個形參變量賦值,這點和C/C#/JAVA等高級語言的調試是一樣的。

把實參變量的值傳給functions函數的形參變量

2.7 調試工具欄的使用

如下圖所示,PLSQL的調試工具欄上的按鈕依次是:開始調試器(F9)運行(Ctrl+R)單步進入(Ctrl+N)單步跳過(Ctrl+O)單步退出(Ctrl+T)運行到下一個異常。它們的功能和visual studio、eclipse等開發語言的IDE工具類似。在點擊測試工具欄上的第一個按鈕開始調試器(F9),就開始Debug了。

開啓Debug調試

2.8 添加監控變量

在packages包函數的調試過程中,我們可以像visual studio、eclipse等IDE那樣,手動添加一些我們需要的監控變量。同時,在調試過程中我們還可以繼續用2.4步驟中的方法添加調試斷點。

添加監控變量

2.9 調試完畢,得到結果

多次點擊單步進入(Ctrl+N),直到該functions函數運行到結束,最後會在界面自動輸出該函數的返回值。

調試完畢,得到結果

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