Java Oracle預存程序問題

來源:互聯網
上載者:User

Java Oracle預存程序問題

PL/SQL是Oracle對標準資料庫語言的擴充,ORACLE公司已經將PL/SQL整合到ORACLE 伺服器和其他工具中了,近幾年中更多的開發人員和DBA開始使用PL/SQL,本文將講述PL/SQL基礎文法,結構和組件、以及如何設計並執行一個PL/SQL程式。

PL/SQL的優點

從版本6開始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的優點以及其專屬的資料管理的便利性,那麼你很難想象ORACLE缺了PL/SQL的情形。PL/SQL 不是一個獨立的產品,他是一個整合到ORACLE伺服器和ORACLE工具中的技術,可以把PL/SQL看作ORACLE伺服器內的一個引擎,sql語句執行者處理單個的sql語句,PL/SQL引擎處理PL/SQL程式塊。當PL/SQL程式塊在PL/SQL引擎處理時,ORACLE伺服器中的SQL語句執行器處理pl/sql程式塊中的SQL語句。

PL/SQL的優點如下:

. PL/SQL是一種高效能的基於交易處理的語言,能運行在任何ORACLE環境中,支援所有資料處理命令。通過使用PL/SQL程式單元處理SQL的資料定義和資料控制元素。

. PL/SQL支援所有SQL資料類型和所有SQL函數,同時支援所有ORACLE物件類型

. PL/SQL塊可以被命名和儲存在ORACLE伺服器中,同時也能被其他的PL/SQL程式或SQL命令調用,任何客戶/伺服器工具都能訪問PL/SQL程式,具有很好的可重用性。

. 可以使用ORACLE資料工具管理儲存在伺服器中的PL/SQL程式的安全性。可以授權或撤銷資料庫其他使用者訪問PL/SQL程式的能力。

. PL/SQL代碼可以使用任何ASCII文字編輯器編寫,所以對任何ORACLE能夠啟動並執行作業系統都是非常便利的

. 對於SQL,ORACLE必須在同一時間處理每一條SQL語句,在網路環境下這就意味作每一個獨立的調用都必須被oracle伺服器處理,這就佔用大量的伺服器時間,同時導致網路擁擠。而PL/SQL是以整個語句塊發給伺服器,這就降低了網路擁擠。

PL/SQL塊結構

PL/SQL是一種塊結構的語言,組成PL/SQL程式的單元是邏輯塊,一個PL/SQL 程式包含了一個或多個邏輯塊,每個塊都可以劃分為三個部分。與其他語言相同,變數在使用之前必須聲明,PL/SQL提供了獨立的專門用於處理異常的部分,下面描述了PL/SQL塊的不同部分:

聲明部分(Declaration section)

聲明部分包含了變數和常量的資料類型和初始值。這個部分是由關鍵字DECLARE開始,如果不需要聲明變數或常量,那麼可以忽略這一部分;需要說明的是遊標的聲明也在這一部分。

執行部分(Executable section)

執行部分是PL/SQL塊中的指令部分,由關鍵字BEGIN開始,所有的可執行語句都放在這一部分,其他的PL/SQL塊也可以放在這一部分。

異常處理部分(Exception section)

這一部分是可選的,在這一部分中處理異常或錯誤,對異常處理的詳細討論我們在後面進行。

PL/SQL塊文法

[DECLARE]
---declaration statements
BEGIN
---executable statements
[EXCEPTION]
---exception statements
END


PL/SQL塊中的每一條語句都必須以分號結束,SQL語句可以使多行的,但分號表示該語句的結束。一行中可以有多條SQL語句,他們之間以分號分隔。每一個PL/SQL塊由BEGIN或DECLARE開始,以END結束。注釋由--標示。

PL/SQL塊的命名和匿名

PL/SQL程式塊可以是一個命名的程式塊也可以是一個Anonymizer塊。Anonymizer塊可以用在伺服器端也可以用在用戶端。

命名程式塊可以出現在其他PL/SQL程式塊的聲明部分,這方面比較明顯的是子程式,子程式可以在執行部分引用,也可以在異常處理部分引用。

PL/SQL程式塊可背獨立編譯並儲存在資料庫中,任何與資料庫相連線應用程式程式都可以訪問這些儲存的PL/SQL程式塊。ORACLE提供了四種類型的可儲存的程式:

. 函數

. 過程

. 包

. 觸發器

函數

函數是命名了的、儲存在資料庫中的PL/SQL程式塊。函數接受零個或多個輸入參數,有一個傳回值,傳回值的資料類型在建立函數時定義。定義函數的文法如下:

FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers]
END [name]


過程

預存程序是一個PL/SQL程式塊,接受零個或多個參數作為輸入(INPUT)或輸出(OUTPUT)、或既作輸入又作輸出(INOUT),與函數不同,預存程序沒有傳回值,預存程序不能由SQL語句直接使用,只能通過EXECUT命令或PL/SQL程式塊內部調用,定義預存程序的文法如下:

PROCEDURE name [(parameter[,parameter,...])] IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers ]
END [name]


包(package)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.