PLSQL Language Reference-PL/SQL概覽-PL/SQL架構

LuiseDalian發表於2014-03-06

PL/SQL架構

PL/SQL引擎

PL/SQL編譯和執行時系統是一個引擎,用於編譯和執行PL/SQL單元。引擎可以被安裝在資料庫中或應用程式開發工具中,例Oracle Forms

在任何環境中,PL/SQL引擎接受有效的PL/SQL單元作為輸入。該引擎執行過程語句,而將SQL語句傳送給SQL引擎。


通常,資料庫處理PL/SQL單元。當一個應用程式開發工具處理PL/SQL單元時,它把它傳遞給本地的PL/SQL引擎。如果PL/SQL單元不包含SQL語句,則本地引擎處理整個PL/SQL單元。如果應用程式開發工具可以受益於條件和迴圈控制,這是非常有用的。例,Oracle Form應用程式通常會使用SQL語句來測試輸入域的值並進行簡單的計算。通過使用PL/SQL而不是SQL,這些應用可以避免對資料庫的呼叫。

PL/SQL單元和編譯引數

PL/SQL單元是:PL/SQL匿名塊、函式、庫、包、包體、過程、觸發器、型別、型別體。

PL/SQL單元受PL/SQL編譯引數(是一系列資料庫初始化引數)的影響。不同的PL/SQL單元,例如包規範和包體,有不同的編譯引數設定。

下表是PL/SQL編譯引數的彙總,如果想顯示針對特定的PL/SQL單元或所有PL/SQL單元的這些引數的值,可以檢視檢視ALL_PLSQL_OBJECT_SETTINGS

plscope_settings

控制編譯時集合、交叉引用和PL/SQL原始碼資料的儲存。

plsql_ccflags

允許對每個PL/SQL單元單獨地控制條件編譯

plsql_code_type

指定PL/SQL單元的編譯模式(INTERPRETED NATIVE

如果plsql_optimize_level < 2

n  編譯器產生解釋程式碼,而不管plsql_code_type的設定;

n  如果指定native,則編譯器警告native被忽略。

plsql_optimize_level

指定編譯PL/SQL單元的優化等級。等級越高編譯器進行越多的優化。

plsql_optimize_level = 1,建議PL/SQL編譯器產生和儲存為PL/SQL偵錯程式使用的程式碼。

plsql_warnings

啟用和禁止PL/SQL編譯器產生的警告資訊,並指定哪些警告資訊被顯示為錯誤。

nls_length_semantics

允許使用位元組長度和字元長度語義建立charvarchar2列。

注意PLSQL_DEBUG編譯引數已經不建議使用了,如果編譯PL/SQL單元進行除錯,可以設定plsql_optimize_level = 1

上表中引數的編譯時期的值與每個PL/SQL單元的後設資料儲存在一起,這意味著當你顯式地重新編譯這些PL/SQL單元時,可以重用這些值。

儲存的PL/SQL單元是使用create or replace語句建立的,匿名塊不是儲存的PL/SQL單元。

為了顯式地重新編譯儲存的PL/SQL單元並重用它的引數值,必須使用帶有compilereuse settings子句的alter語句。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1102567/,如需轉載,請註明出處,否則將追究法律責任。

相關文章