如何在PLSQL中除錯PACKAGE包中的FUNCTION函式
Oracle中的packages包是一組包含procedures儲存過程、functions函式和遊標等元素的組合。相比Sybase資料庫的SQL Advantage工具,Oracle資料庫的管理工具——PLSQL在除錯儲存過程還是方便。
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
2.2 切換到“除錯”模式
在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除錯模式。
2.6 把實參變數的值傳給functions函式的形參變數
在2.5步驟中,會開啟如下圖的初始除錯介面。這時,我們看到的是包頭的實現程式碼(每個Package包都是從包頭宣告開始的
)。可以先給函式Get_counter
的3個形參變數賦值,這點和C/C#/JAVA等高階語言的除錯是一樣的。
2.7 除錯工具欄的使用
如下圖所示,PLSQL的除錯工具欄
上的按鈕依次是:開始偵錯程式(F9)
,執行(Ctrl+R)
,單步進入(Ctrl+N)
,單步跳過(Ctrl+O)
,單步退出(Ctrl+T)
,執行到下一個異常
。它們的功能和visual studio、eclipse等開發語言的IDE工具類似。在點選測試工具欄上的第一個按鈕開始偵錯程式(F9)
,就開始Debug了。
2.8 新增監控變數
在packages包函式的除錯過程中,我們可以像visual studio、eclipse等IDE那樣,手動新增一些我們需要的監控變數。同時,在除錯過程中我們還可以繼續用2.4步驟中的方法新增除錯斷點。
2.9 除錯完畢,得到結果
多次點選單步進入(Ctrl+N)
,直到該functions函式執行到結束,最後會在介面自動輸出該函式的返回值。