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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Referenc-PL/SQL動態SQL-本地動態SQL(EXECUTE IMMEDIATE語句)SQL
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在動態SQL塊中呼叫子程式。SQL
- PLSQL Language Referenc-PL/SQL動態SQL-動態SQL中重複的佔位符名名稱SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-偽列SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-語句SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-自治事務(二)SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-游標-顯式游標SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-自治事務-控制自治事務SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-查詢結果集處理SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-savepoint語句SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-建立游標變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-隱式回滾SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數賦值SQL變數賦值
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-游標-開啟和關閉顯式游標SQL
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在USING子句中未初始化的變數表示NULLSQL變數Null
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-覆蓋預設的鎖SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數作為宿主變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-開啟和關閉游標變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-帶有子查詢的查詢結果集處理SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數作為子程式引數SQL變數
- PLSQL Language Referenc-PL/SQL動態SQL-SQL隱碼攻擊-SQL隱碼攻擊技術-語句修改SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-使用顯式游標OPEN-FETCH-CLOSE處理查詢結果集SQL
- 動態SQL-條件分頁SQL
- oracle procedure plsql 動態sql之動態傳遞表OracleSQL
- PLSQL Language Referenc-PL/SQL子程式-前向宣告SQL
- PLSQL Language Referenc-PL/SQL子程式-子程式呼叫SQL
- 動態SQLSQL
- 動態SQL intoSQL
- PLSQL Language Referenc-PL/SQL集合和記錄-多維集合SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-巢狀表SQL巢狀
- PLSQL Language Referenc-PL/SQL集合和記錄-集合型別SQL型別
- PLSQL Language Referenc-PL/SQL子程式-使用子程式的原因SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合構造器SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列SQL陣列
- MyBatis 動態 SQLMyBatisSQL
- MyBatis動態SQLMyBatisSQL