PLSQL Language Referenc-PL/SQL動態SQL-何時需要動態SQL

LuiseDalian發表於2014-03-18

PL/SQL動態SQL

動態SQL:是在執行時產生和執行SQL語句的程式設計方法。

在下列情況下動態SQL是非常有用的:

n  編寫像ad hoc查詢系統一樣的通用目的的和靈活的應用程式。

n  編寫必須執行DDL語句的應用程式

n  在編譯時並不知道SQL語句的全部文字

n  在編譯時並不知道輸入、輸出變數的個數和型別

PL/SQL提供了2種方法來寫動態SQL

n  本地動態SQL:是PL/SQL語言建立和執行動態SQL的功能。

n  DBMS_SQL:是建立、執行和描述動態SQL語句的API

 

本地動態SQL的程式碼相對於等效的DBMS_SQL包程式碼更容易閱讀和書寫,並且執行明顯要快(尤其是能被編譯器優化時)。然而為了輸入本地動態SQL程式碼,你必須在編譯時知道動態SQL語句輸入、輸出變數的個數和型別。如果在編譯時不知道這些資訊,就必須使用DBMS_SQL包。

 

當你同時需要DBMS_SQL包和本地動態SQL,可以使用DBMS_SQL.TO_REFCURSOR()DBMS_SQL.TO_CURSOR_NUMBER()函式在它們之間進行轉換。

何時需要動態SQL

n  在編譯時不知道SQL的全部文字。例,一個查詢語句在編譯時包含一個未知的識別符號(如表名)或在編譯時一個WHERE子句中的subclauses的個數不確定。

n  靜態SQL不支援的SQL語句

 

如果不需要動態SQL,則可以使用靜態SQL,有如下好處:

n  成功地編譯可以驗證靜態SQL引用有效的資料庫物件,並且具有需要的許可權來訪問這些物件。

n  成功地編譯可以建立方案物件依賴。

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

相關文章