1. 程式人生 > >PL/SQL進行debug 包以及儲存過程

PL/SQL進行debug 包以及儲存過程

這兩天在學習PL/SQL,雖然和MySQL大部分sql語句相似,並且儲存過程等相關寫法也很相似。但是畢竟是新接觸的,難免會遇到各種初學者都會遇到的問題。本文主要講解當執行sql指令碼提示錯誤時,該如何去查錯誤以及debug技巧。提高開發效率。

包的寫法以及使用

oracle裡面有包(package)一說,其意思就相當於Java裡面的類,package裡面可以定義全域性變數,儲存過程(procedure),方法(function)等等。
下面看一個簡單例子:

簡單例子

在oracle中,一個package,包括兩部分,包頭,以及包體(body),並且兩部分需要分開編譯(compile),否則會報錯。
包頭:

create or replace package anLA7856 is
  procedure m_test;
end;

包體(body):

create or replace package body anLA7856 is
  procedure m_test is

  world varchar2(20):='hello oracle!';
  begin
    dbms_output.put_line(world);
  end;
end;

以上內容便是包頭和包體,你可以把這兩部分寫到同一個sql檔案中,但是要分開編譯先編譯包頭,再編譯包體。

通常,我們是先選擇包頭程式碼,然後執行,再選擇包體程式碼,再執行,但是呢,再PL/SQL中,直接這樣,不管成功或者失敗,都是不會報錯的,你需要開啟右側的Objects欄,去檢視Packages和Package bodies,這樣如果有錯誤,會在相應的包上有把×


這裡寫圖片描述
如上圖所示,anla7856包頭包體都是對的,而p_stu兩個都有把×。

此時,如果有×,你就需要右擊包名,選擇Edit,進入到編譯後的包檔案程式碼。
這裡寫圖片描述

如上圖所示,可以看到下列有出錯資訊,點選就能調到相應行,這樣一來,你就能進行發現錯誤,然後解決錯誤。

測試程式碼

在儲存過程中測試:

declare

begin
  anLA7856.m_test();
end;

結果:
這裡寫圖片描述

debug方法

下面進入重點,如何debug?
首先在剛剛的Object欄目下,選擇一個沒有編譯錯誤的包體,右擊->Edit
然後,在隨意一行下的左側行頭單擊打個斷點
這裡寫圖片描述

下一步,在Object那個頁面,右擊->Add debug information;

再下一步,新建一個test window,這一步你可以選擇一個待測試的方法或者儲存過程,右擊->test,也能通過file->new test window來實現。,比如上圖,我右擊mquery,然後選擇test。

接著,如果你的儲存過程或方法有傳入引數,則可以再下圖value位置輸入引數:
這裡寫圖片描述

然後按下F9啟動執行test指令碼,接下來你可以進行下一步,或者進入方法,調到下個斷點等等,就和其他整合開發環境debug方法一致了。

如何檢視變數值?

法一:把滑鼠放在該變數上面即可
法二:在下圖位置將變數名稱輸入,value值就會自動更新:
這裡寫圖片描述

除錯儲存過程等

除錯儲存過程以及其他程式碼也都相似,在test windows裡面開始除錯即可。

以上就是PL/SQL裡面的debug方法,掌握能極大提高開發效率哦。