PLSQL Language Referenc-PL/SQL動態SQL-何時需要動態SQL
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 動態SQL-條件分頁SQL
- MyBatis 動態 SQLMyBatisSQL
- MybBatis動態SQLBATSQL
- Mybatics動態sqlBATSQL
- mybatis動態SQLMyBatisSQL
- PostgreSql擴充套件Sql-動態載入共享庫(C函式)SQL套件函式
- MyBatis(七) 動態SQLMyBatisSQL
- 1 Mybatis動態SQLMyBatisSQL
- Mybatis--動態SQLMyBatisSQL
- mybatis動態sql總結MyBatisSQL
- Mybatis-06 動態SqlMyBatisSQL
- MyBatis框架之SQL對映和動態SQLMyBatis框架SQL
- MyBatis對動態SQL的支援MyBatisSQL
- mybatis動態sql與分頁MyBatisSQL
- Java-Mybatis動態SQL整理JavaMyBatisSQL
- Gbase 8s 動態 SQLSQL
- Mybatis介紹之 動態SQLMyBatisSQL
- APEX 通過PL/SQL動態展示區域中動態內容SQL
- 動態 SQL 和快取機制SQL快取
- Mybatis 動態執行SQL語句MyBatisSQL
- day06-動態SQL語句SQL
- 【SQL】Oracle避免動態SQL,提高過程執行效率SQLOracle
- 介面的繫結方案和動態SQLSQL
- hive Sql的動態分割槽問題HiveSQL
- Myabtis動態SQL,你真的會了嗎?SQL
- 【MyBatis學習總結 (五),動態SQL】MyBatisSQL
- PHP--動態生成sql查詢表格PHPSQL
- Mybatis where 1=1 動態sql問題MyBatisSQL
- MyBatis 動態 SQL 最全教程,這樣寫 SQL 太優雅了!MyBatisSQL
- SQL 如何實現動態的行列轉置SQL
- GaussDB資料庫SQL系列-動態語句資料庫SQL
- Mybatis 裡對映檔案的動態 SQL 語句,實現if,where,foreache的SQL語句動態拼接查詢MyBatisSQL
- SQL-小白最佳入門sql查詢一SQL
- MyBatis標籤實現的動態SQL語句MyBatisSQL
- BIRT 中如何根據引數動態拼接 SQLSQL
- PL/SQL中動態掉用儲存過程SQL儲存過程
- 一句SQL完成動態分級查詢SQL
- Mybatis(一)Porxy動態代理和sql解析替換MyBatisSQL
- 例項詳解如何構建動態SQL語句SQL