PLSQL Developer 攻略


.Net程序員學用Oracle系列(18):PLSQL Developer 攻略

 

我是在用過幾年 SSMS 之后才接觸 PL/SQL Developer 的,一開始真的是非常不適應,感覺各種困難、各種麻煩、各種莫名其妙。當初我甚至懷疑過開發 PL/SQL Developer 的人是不是腦子有病,界面丑也就罷了,功能還那么難用,為啥不學學人家微軟呢?哪怕是模仿一下子!然而,現實是當初我並不知道除了 PL/SQL Developer 之外,還有別的可以用來開發 Oracle 的工具。但為了把工作做好,也為了更高效、更自由的使用 PL/SQL Developer,我愣是硬着頭皮把它所有菜單和工具欄幾乎點了個遍。近幾年也一直在用 PL/SQL Developer,時至今日,終有所獲,我將通過本文把我所知道的一些好用的功能或技巧分享給大家。

注意:本人用的是 PL/SQL Developer 7.0,下文將根據這個版本來講述。如果你用的是高版本的,關系也不大,因為我曾用過一陣子 10.0 的,官方最新版 12.0 的功能介紹我也大致看過,發現也沒太大差別。可能有些功能內部做了改進,也是為了支持新的環境或提升性能,新功能似乎不多。最直觀的感受還是 UI 的美化,畢竟老版本的確實不太好看,有些人甚至就是因為這個而不用 PL/SQL Developer 的。

1、功能說明及使用技巧

1.1、對象瀏覽器

能夠顯示與 PL/SQL 開發相關的所有信息。可用它來獲取對象描述,查看對象定義,為調試器創建測試腳本,啟用或禁用觸發器和約束,重新編譯無效對象,查詢或編輯表或查看數據,在對象源中搜索文本,將對象名稱拖放到編輯器中,等等。由於對象瀏覽器中的文件夾特別多,如果沒有一些使用技巧的話,操作效率可能會很低。

定義瀏覽器過濾器:對象瀏覽器默認過濾的是“All objects”,這時候如果你直接去點開文件夾的話,且不說會有很多你本不想看的系統對象顯示出來干擾你找尋用戶對象,關鍵是往往要卡很久,如果數據庫比較大的話甚至會卡死。所以有些人會在登進 PL/SQL Developer 之后先去把它改成“My objects”,像我這種懶人是難以養成這種糟糕的“好習慣”的。后來我找到一個技巧——在【工具】中點擊【瀏覽器過濾器】或者點擊“All objects”上的第 5 個圖標,然后選中“My objects”,在下方【默認】選項前打勾並確定,等下次再登錄進來默認就是“My objects”了。

定義瀏覽器文件夾:對象瀏覽器中的文件夾有好幾十個,但只有表、視圖、存儲過程、函數等少數幾類數據庫對象比較常用。有時候越是着急越是找不着,盡管也費不了多少時間,但像我這種急性子哪兒受得了啊!其實可以自定義瀏覽器文件夾,譬如修改文件夾顏色、排列順序等,以便快速找到需要的對象。在【工具】中點擊【瀏覽器文件夾】或者點擊“All objects”上的第 6 個圖標即可打開定義瀏覽器文件夾的窗口,然后選中常用的文件夾設置你喜歡的顏色確定即可。

更改對象的雙擊行為:在對象瀏覽器中雙擊文件夾會展開對象,雙擊對象會展開對象的屬性,可能你用習慣了感覺也沒啥。但在大多數軟件中,雙擊樹節點肯定會彈出或進入詳情窗口,而且一般找到對象也是想看它的定義而不是展開一堆文件夾(我相信這一點會讓不少人大跌眼鏡)。想要看對象定義還得通過右鍵菜單去找,右鍵菜單選項很多,一不小心還可能會點錯,總之比較繁瑣。其實可以更改默認的對象雙擊行為,步驟:【工具】→【首選項】→【用戶界面】→【瀏覽器】→【雙擊行為】→改為查看說明和體確定即可。

查找數據庫對象:點擊“My objects”上的第 4 個按鈕,然后在文本查找輸入框中輸入“abc”並點擊搜索,就能查到數據庫中對象定義里包含“abc”的所有對象。實際試用中一般還會根據實際情況設置搜索模式、對象條件和對象類型,目的是為了更快的查到目標對象。

編譯無效對象:在更改數據庫中的表或其它對象后,可能會導致相關的存儲過程、函數、視圖等編譯失敗,這時候通過對象瀏覽器人工逐一排查是比較笨的辦法,因為 PL/SQL Developer 提供了編譯無效對象的窗口功能。點擊【工具】→【編譯無效對象】即可看到當前數據庫中所有編譯未通過的對象,然后點擊窗口工具欄中的“編譯無效對象”按鈕即可重新編譯所有無效的對象,再點擊后面的“刷新對象列表”,編譯成功的對象會自動從窗口中消失。

1.2、SQL 窗口

SQL 窗口允許你輸入任何 SQL 語句,並在網格中查看或編輯結果。可能很多人登進 PL/SQL Developer 之后會習慣性的新建一個 SQL 窗口,就像很多年前人們打開電腦的第一件事就是登 QQ 一樣,這說明 SQL 窗口很常用,的確,大多數時候我們也就是寫個查詢語句然后執行看看查詢結果。其實 SQL 窗口的功能遠不止於此,下來我們來看幾個使用 SQL 窗口的小技巧。

歷史緩沖區:可以從歷史緩沖區中調用先前執行過的 SQL 語句。步驟:【編輯】→【重新調用語句】或者快捷鍵 Ctrl+E,無論那種方式都得確保焦點在窗口(不限 SQL 窗口,其它類型窗口也行)中。

快速查看對象定義:在按住Ctrl鍵的情況下,單擊 SQL 窗口中的任何對象名(如表名、存儲過程名等),即可查看該對象的定義。

設置關鍵字大小寫:假如設置了關鍵字大寫,寫完關鍵字之后它就會自動變成大寫的。步驟:【工具】→【首選項】→【用戶界面】→【編輯器】→【關鍵字大小寫】→選擇大寫后確定即可。

設置 NULL 的顏色:在結果集中 NULL 和空字符串都是看不見的,比較不好區分,這時候可以給 NULL 設置一種特殊的顏色以便查看。步驟:【工具】→【首選項】→【窗口類型】→【SQL 窗口】→點擊 NULL 值單元格顏色前的區塊選擇自己喜歡的顏色並確定即可。

設置 SQL 語句外觀:默認情況下,用 SQL 窗口看長語句是很丑陋的,尤其是那斜體的注釋,看着讓人倒胃口,美觀性差了 SSMS 十萬八千里,好在我們可以自己更改這些糟糕的默認設置。

  • 設置關鍵字、注釋、字符串等的顏色等的步驟:【工具】→【首選項】→【用戶界面】→【編輯器】→在語法高亮下面選擇你喜歡的顏色等確定即可。
  • 加亮編輯行/圓括號高亮:這兩個功能在看長語句時非常有用,一個能讓你時刻知道焦點在那一行,一個能讓你迅速定位某個括號中的內容。步驟:【工具】→【首選項】→【用戶界面】→【編輯器】→【其它】→勾上加亮編輯行/圓括號高亮確定即可。可能你會發現上面還有個顯示行數的選項,但我遺憾的告訴你,勾上它也只會在 PL/SQL 編輯器中顯示行號,而 SQL 窗口中並不會顯示行號。
  • 設置字體:SQL 窗口的默認字體比較小,其實也可以自己改大一點。步驟:【工具】→【首選項】→【用戶界面】→【字體】→【編輯器】→選擇你喜歡的字體確定即可。

設置日期和時間的格式:查詢結果中日期和時間默認分隔符是斜線,如果你看不習慣也可以按照自己的喜好自定義格式。示例如圖:
plsqldev-02

置換變量:當查詢被運行時,你可以在你的 SQL 文本里使用置換變量以允許用戶輸入數據。示例如圖:
plsqldev-04
另外,如果你希望在 SQL 文本里使用 & 符號但不被解釋為置換變量的話,那么用雙 & 符號來代替即可。

實例查詢:SQL 窗口結果網格支持按實例查詢模式搜索結果集中的特定記錄。所謂按實例查詢我的理解就是按條件查詢,相當於用工具寫 WHERE 條件,我個人覺得開發人員應該會更喜歡手寫 WHERE 條件。示例如圖:
plsqldev-01

復制查詢結果:在查詢出結果后,可以通過單擊結果集第一行第一列(也就是顯示字段名那一行的第一列)來選中整個查詢結果,然后按Ctrl+C復制查詢結果,再然后就可以通過Ctrl+V把查詢結果粘貼到 Excel、Word、記事本等任何可以輸入文字的表格或編輯器里去。不僅如此,還可以通過拖選行來復制部分行,或者拖選列來復制部分列,甚至可以選擇結果集中的某個區塊,方法是將鼠標放在任何單元格的左邊,等光標變成箭頭形狀時按住鼠標左鍵向任意方向拖選即可。

導出查詢結果:對於結果集巨大的查詢(上萬條記錄或更多),首先查詢數據到結果表格,隨后把數據導出到文件里,這樣做也許是不方便的。這也許會花很長時間和占用很多內存資源。這樣還不如直接寫結果集到導出文件里更有效。要做到這一點,你可以按結果集工具欄里的導出查詢結果按鈕。位置如下圖:
plsqldev-03
圖形:要快速地顯示一個在 SQL 窗口或報告窗口里查詢的列數據的圖示,你可以按結果集工具欄里的圖形按鈕來使用圖形窗口。還可以通過后面的三角按鈕來選擇圖形圖、線形圖、面積圖或餅圖等。位置如上圖:

更新結果集:在利用 ROWID 更新數據中已經講過一種更新結果集的語法。其實還有另一種更新結果集的語法:SELECT ... FOR UPDATE,也就是在查詢語句后面加FOR UPDATE。不過這種更新方法會將所有已選的記錄鎖住,所以一般來說用 ROWID 使結果集可更新是更好的選擇。

執行 SQL 語句:一個 SQL 窗口中可以寫多條語句,你拖選某一段,然后點擊執行按鈕或按F8就會執行那一段語句。其實還可以自動選擇語句,這樣你按F8的時候,它就會自動選擇光標所在語句塊並執行。步驟:【工具】→【首選項】→【窗口類型】→【SQL 窗口】→勾選自動選擇語句並確定即可。

查看執行計划:選擇一條語句按F5或者通過工具菜單又或者是右鍵菜單點擊執行計划即可查看。

其實 SQL 窗口的功能非常多,本節也只介紹了我個人認為相對實用的一些,還有很多個別時候會很有用的功能,如查看單個記錄、連接查詢、標准查詢等,有興趣的讀者可參考《PL/SQL Developer 用戶指南》進一步研究。

1.3、測試窗口

測試窗口讓你可以調試任何程序單元,而不對其進行任何修改,包括觸發器和對象類型。測試窗口集成的調試器提供了運行、單步進入、單步跳過、單步退出、運行到下一個異常、斷點、查看和設置變量、查看調用堆棧等功能。

調試存儲過程/函數:存儲過程/函數是比較方便調試的,直接在對象名上【右鍵】然后點擊【測試】即可進入測試窗口,而且 PL/SQL Developer 會自動生成測試腳本,或者你自己新建個測試窗口,然后自己寫測試腳本也是可以調試的。點測試窗口左上角的那個大大的黃色按鈕或者按F9即可開始調試,緊接着后面的幾個按鈕是你調試過程中會用到的,也可以按快捷鍵,不過說實話 PL/SQL Developer 默認的快捷鍵真心不好用,盡管可以自己改,但畢竟需要調試 SQL 的時候並不多,懶得去討那個麻煩,所以我平常一般都是點上面那幾個按鈕來調試。

調試觸發器:觸發器比較特殊,你會發現它的右鍵菜單上沒有調試選項,但可以通過自己新建調試窗口並自定義調試腳本來調試觸發器。至於測試腳本要怎么寫,你可以這么來理解,假如某個觸發器是在向 A 表添加記錄時被觸發,那么你的腳本里就寫一條向 A 表插入記錄的INSERT語句,然后按F9開始調試,執行插入語句的時候斷點就會自動進入觸發器內。

概覽圖:可在測試窗口里訪問概覽圖,在運行測試腳本前,按一下測試窗口工具欄里的“創建概覽圖報告”,再按F8(注意:按F9是無效的)之后就可以轉到概覽圖頁查看運行報告了。示例如圖:
plsqldev-05

1.4、命令窗口

命令窗口的功能與 SQL Plus 的功能相似,SQL Plus 支持的命令一般命令窗口也支持,且在腳本編輯方面比 SQL Plus 要強大的多,所以如果你已經開着 PL/SQL Developer 的話,就沒必要再去開 SQL Plus 了。具體命令的用法可參考SQL Plus 實用命令參考

1.5、圖表窗口

圖表窗口允許你創建選定對象的圖示,這樣你就可以清晰地看到應用程序的數據庫對象和它們之間的關系。你可以添加所有相關的對象類型包括它們之間的關系到一個圖表,表之間的外鍵關系被自動地包括在內。右擊一個對象提供了訪問所有對象的功能,雙擊一個對象將激活針對對象類型的默認操作。

個人感覺圖表窗口最大的好處就是可以直觀的看到一個對象定義,譬如你想看某張表,只需要在對象瀏覽器中找到它並把它拖拽到圖表窗口中即可。

1.6、報告窗口

PL/SQL Developer 提供了內置的報告功能和大量標准報告,而且你還可以方便的通過報告窗口創建自定義報告。自定義報告將被保存在報告文件中,進而包含在報告菜單內。這樣,運行你自己經常使用的自定義報告就非常方便了。

說真的,報告窗口此前我還真沒用過,不過我大概試了試,估計 DBA 會更喜歡這個功能一些。報告菜單中已經包含了二十幾個標准報告,可以用來了解當前數據庫運行狀況,而且報告內容還可以很方便的通過報告右邊的按鈕導出為 Excel 或 Html。這樣一來的話倒是可以在運營部門需要數據的時候,通過報告窗口生成數據報告,然后導出給他們。

1.7、右鍵菜單

在 PL/SQL Developer 中的 SQL 窗口、測試窗口、命令窗口、程序窗口等幾乎每一個文本編輯器窗口中,在任何對象名上右鍵,都會彈出一個包含操作對象命令的菜單,也就是本節要說的右鍵菜單。

不同類型對象的右鍵菜單也有所不同,即使菜單名相同彈出來的窗口也可能會不同,由於數量巨多,本節不會逐一分析,而且常用的一些右鍵功能試用起來也很簡單,有興趣的讀者可多多嘗試。下面將討論如何應對使用過程中可能會遇到的幾種特殊情況:

  • 對象類型識別錯誤,導致彈出的右鍵菜單也不對,這時候可以在對象名前加個分號,再右鍵 PL/SQL Developer 就能正確判斷出對象的類型了。
  • 無法彈出跨數據庫訪問對象的右鍵菜單,這時候需要先選中整個對象名稱(包括對象前的點和 Schema 名),再來右鍵即可彈出右鍵菜單。
  • PL/SQL Developer 還為 SQL 語句塊提供了方便使用的右鍵菜單,使用方法是先選中一段 SQL 語句,然后在選中區域內右鍵即可。

1.8、快速登錄技巧

在 SSMS 登錄界面上有的“Windows 身份驗證”選項和“記住密碼”兩個功能,任何一個都可以讓程序員不必每次都要輸入密碼才能登錄數據庫,而從 PL/SQL Developer 的登錄界面來看,它這些似乎都沒有。其實也不盡然,PL/SQL Developer 只是藏得比較深而已,下面我們來看幾個快速登錄的小技巧:

記住登錄歷史和登錄密碼:【首選項】→【Oracle】→【登錄歷史】→【定義】→勾選“存儲歷史”和“帶口令存儲”后確定,從下次登錄開始就不用再輸入密碼了。實例如圖:
plsqldev-06
可能有朋友會發現關掉 PL/SQL Developer 再次打開,口令那里還是空的,並沒記住密碼。其實不然,只是 PL/SQL Developer 的操作方式不同尋常而已,具體請看下圖:
plsqldev-07

不配置tnsname直接登錄:一般來說,我們都是先裝好 Oracle 客戶端,然后配置 tnsname,再打開首選項配置連接,最后才能通過 PL/SQL Developer 登錄數據庫,如果需要連很多數據庫,就得配很多 tnsname。但有時候我們只是想臨時連一下某個環境,譬如項目的測試環境有很多個,急需幫測試人員解決某個環境的問題,這時候還要先找到tnsnames.ora文件,配置一通之后才能去連,這就比較繁瑣了。后來一個偶然,我發現不配置 tnsname 也能直接連數據庫,那一刻我真的是欣喜若狂。其實也就是登錄寫法稍有不同罷了,用戶名和口令還是一樣的輸入,數據庫那一欄手動寫上要登錄的IP和端口以及實例名即可,語法實例:

host:port/sid
127.0.0.1:1521/orcl(登錄本機 orcl 數據庫的寫法,1521 是 Oracle 默認端口,只要安裝時不去改,一般就還是這個端口)

打開即登錄:在 PL/SQL Developer 的安裝目錄里有個名為plsqldev.exe的文件,也就是啟動 PL/SQL Developer 的文件。一般都是在桌面上給它創建一個快捷方式,然后通過快捷方式來啟動 PL/SQL Developer,其實它還可以接受命令行參數,我們可以在快捷方式的目標欄按username/password@tnsname的格式指定userid參數值,然后雙擊快捷方式就會直接登錄進去,連登錄界面都不會彈出來了。示例如圖:
plsqldev-08
這種登錄方式應該是最簡單快捷的,同時缺點也是很明顯的,因為想登錄別的數據庫還得再切換。當然,如果你一般只登某一個數據庫的話,那這種方式最合適不過了。

1.9、其它

上文已經講述了 PL/SQL Developer 中,我個人覺得相對重要或好用的一些功能或技巧。本節將再補充幾個對開發人員而言沒那么重要或我個人不太喜歡的功能簡述。

窗口列表:顧名思義,管理(已打開)窗口的工具,我發現有些人對這個功能是重度依賴,譬如曾有個同事只是問我個 SQL 寫法的問題,結果愣是把我 PL/SQL Developer 的窗口列表調出來之后,才把問題說明白。我個人不那么喜歡這個功能,因為我不喜歡開太多窗口,不用的窗口我會及時關掉。當然,如果你跟我那位同事一樣喜歡開很多個窗口,那么窗口列表功能或許對你很有幫助。打開步驟:【工具】→【窗口列表】。

PL/SQL 美化器:我這個人比較注重代碼美,一般我自己就會把語句排版的很整齊。但我不太喜歡這個工具的默認格式,盡管可以自定義,但比較繁瑣。其實如果僅僅用在數據庫中也還好,但要把美化后的語句放到程序中可能就很不美了。譬如我以前招的一個人,他就很喜歡用這個工具,有次他寫了個列表查詢方法,我一看 200 多行就點開仔細看了下,結果發現僅 SQL 語句就占了近 100 行,一屏都顯示不完,而且大部分行前面有很多空格,這樣一來,日后維護這個方法的人看着就很累了,改起來也很不方便,所以說要放到程序代碼中的 SQL 語句還是不用 PL/SQL 美化器為好。打開步驟:【編輯】→【PL/SQL 美化器】,或者直接點工具欄里的“PL/SQL 美化器”按鈕。

Oracle 信息窗口:該窗口中包含當前 PL/SQL Developer 的版本、命令行參數、連接參數等參數信息和 TNS 名等信息。打開步驟:【幫助】→【關於】→【附加信息】。

2、總結

《PL/SQL Developer 用戶指南》有數百頁,換句話說 PL/SQL Developer 的功能非常多,本文也只是我參照個人的使用習慣和需要做的個簡要概括和總結。還有很多功能我也不曾或很少使用過,譬如:比較用戶對象、比較表數據、導出用戶對象、導出表、導入表、文本導入器、ODBC 導入器、數據生成器、測試管理器等實用功能或工具,以及查詢設計器、模版列表等傻瓜化編碼工具,有興趣或有需要的朋友可參考《PL/SQL Developer 用戶指南》自行研究。

本文鏈接http://www.cnblogs.com/hanzongze/p/Oracle-PLSQLDeveloper.html
版權聲明:本文為博客園博主 韓宗澤 原創,作者保留署名權!歡迎通過轉載、演繹或其它傳播方式來使用本文,但必須在明顯位置給出作者署名和本文鏈接!本人初寫博客,水平有限,若有不當之處,敬請批評指正,謝謝!


 
 
出處:http://www.cnblogs.com/hanzongze/p/Oracle-PLSQLDeveloper.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM