天天看點

[推薦]ORACLE PL/SQL程式設計詳解之一:PL/SQL 程式設計簡介(千裡之行,始于足下)

SQL語言隻是通路、操作資料庫的語言,并不是一種具有流程控制的程式設計語言,而隻有程式設計語言才能用于應用軟體的開發。PL /SQL是一種進階資料庫程式設計語言,該語言專門用于在各種環境下對ORACLE資料庫進行通路。由于該語言內建于資料庫伺服器中,是以PL/SQL代碼可以對資料進行快速高效的處理。除此之外,可以在ORACLE資料庫的某些用戶端工具中,使用PL/SQL語言也是該語言的一個特點。本章的主要内容是讨論引入PL/SQL語言的必要性和該語言的主要特點,以及了解PL/SQL語言的重要性和資料庫版本問題。還要介紹一些貫穿全書的更詳細的進階概念,并在本章的最後就我們在本書案例中使用的資料庫表的若幹約定做一說明。

PL/SQL是 Procedure Language & Structured Query Language 的縮寫。ORACLE的SQL是支援ANSI(American national Standards Institute)和ISO92 (International Standards Organization)标準的産品。PL/SQL是對SQL語言存儲過程語言的擴充。從ORACLE6以後,ORACLE的RDBMS附帶了PL/SQL。它現在已經成為一種過程處理語言,簡稱PL/SQL。目前的PL/SQL包括兩部分,一部分是資料庫引擎部分;另一部分是可嵌入到許多産品(如C語言,JAVA語言等)工具中的獨立引擎。可以将這兩部分稱為:資料庫PL/SQL和工具PL/SQL。兩者的程式設計非常相似。都具有程式設計結構、文法和邏輯機制。工具PL/SQL另外還增加了用于支援工具(如ORACLE Forms)的句法,如:在窗體上設定按鈕等。本章主要介紹資料庫PL/SQL内容。

對于客戶/伺服器環境來說,真正的瓶頸是網絡上。無論網絡多快,隻要用戶端與伺服器進行大量的資料交換。應用運作的效率自然就回受到影響。如果使用PL/SQL進行程式設計,将這種具有大量資料處理的應用放在伺服器端來執行。自然就省去了資料在網上的傳輸時間。

PL/SQL由于分為資料庫PL/SQL部分和工具PL/SQL。對于用戶端來說,PL/SQL可以嵌套到相應的工具中,用戶端程式可以執行本地包含PL/SQL部分,也可以向服務發SQL指令或激活伺服器端的PL/SQL程式運作。

PL/SQL是Oracle在标準SQL上的過程性擴充,不僅允許在PL/SQL程式内嵌入SQL語句,而且允許使用各種類型的條件分支語句和循環語句,可以多個應用程式之間共享其解決方案。

PL/SQL程式結構是一種描述性很強、界限分明的塊結構、嵌套塊結構,被分成單獨的過程、函數、觸發器,且可以把它們組合為程式包,提高程式的子產品化能力。

使用PL/SQL提供的異常處理(EXCEPTION),開發人員可集中處理各種ORACLE錯誤和PL/SQL錯誤,或處理系統錯誤與自定義錯誤,以增強應用程式的健壯性。

ORACLE提供了大量的内置程式包。通過這些程式包能夠實作DBS的一些低層操作、進階功能,不論對DBA還是應用開發人員都具有重要作用。

當然還有其它的一些優點如:更好的性能、可移植性和相容性、可維護性、易用性與快速性等。

    PL/SQL是ORACLE系統的核心語言,現在ORACLE的許多部件都是由PL/SQL寫成。在PL/SQL中可以使用的SQL語句有:

INSERT,UPDATE,DELETE,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT。

提示:在 PL/SQL中隻能用 SQL語句中的 DML 部分,不能用 DDL 部分,如果要在PL/SQL中使用DDL(如CREATE  table  等)的話,隻能以動态的方式來使用。

l ORACLE 的 PL/SQL 元件在對 PL/SQL 程式進行解釋時,同時對在其所使用的表名、列名及資料類型進行檢查。

l PL/SQL 可以在SQL*PLUS 中使用。

l PL/SQL 可以在進階語言中使用。

l PL/SQL可以在ORACLE的開發工具中使用(如:SQL Developer或Procedure Builder等)。

l 其它開發工具也可以調用PL/SQL編寫的過程和函數,如Power Builder 等都可以調用伺服器端的PL/SQL過程。

    PL/SQL程式的運作是通過ORACLE中的一個引擎來進行的。這個引擎可能在ORACLE的伺服器端,也可能在 ORACLE 應用開發的用戶端。引擎執行PL/SQL中的過程性語句,然後将SQL語句發送給資料庫伺服器來執行。再将結果傳回給執行端。

本文轉自yonghu86 51CTO部落格,原文連結:http://blog.51cto.com/yonghu/1321351,如需轉載請自行聯系原作者