PLSQL Language Referenc-PL/SQL動態SQL-本地動態SQL(EXECUTE IMMEDIATE語句)
本地動態SQL
本地動態SQL可以使用EXECUTE IMMEDIATE語句處理大多數的動態SQL語句。
如果動態SQL語句是一個返回多行結果的SELECT語句,本地動態SQL給你如下選擇:
n 使用帶BULK COLLECT INTO子句的EXECUTE IMMEDIATE子句。
n 使用OPEN FOR、FETCH和CLOSE語句。
SQL游標屬性在本地動態SQL INSERT、UPDATE、DELETE和單行SELECT語句之後,與靜態SQL的對應部分執行相同的工作。
0.1.1 EXECUTE IMMEDIATE語句
EXECUTE IMMEDIATE語句是本地動態SQL處理大多數動態SQL語句的方法。
如果動態SQL語句是自包含的(即沒有繫結變數佔位符,唯一能夠返回的結果就是錯誤),則EXECUTE IMMEDIATE不需要子句。
如果動態SQL語句包含繫結變數佔位符,則每一個佔位符必須在EXECUTE IMMEDIATE語句的適當子句中有對應的繫結變數:
n 如果動態SQL語句為最多返回一行的SQL語句,則使用INTO子句繫結輸出變數,使用USING子句繫結輸入變數。
n 如果動態SQL語句是返回多行結果的SELECT語句,則使用BULK COLLECT INTO子句定義定義輸出變數,使用USING子句定義輸入變數。
n 如果是沒有RETURNING INTO子句的DML語句,而不是SELECT,則將所有的繫結變數放在USING子句中
n 如果是帶有RETURNING INTO子句的DML語句,則將輸入繫結變數放在USING子句中,將輸出繫結變數放在RETURNING INTO子句中。
n 如果是一個匿名塊或一個CALL語句,則將所有繫結變數放在USING子句中。
n 如果動態SQL語句會呼叫一個子程式要確保:
u 對應於子程式引數佔位符的每一個繫結變數與子程式具有相同的引數傳遞模式,資料型別要與子程式引數型別相容。(參考練習7-1)
u 不要有有SQL不支援型別的繫結變數。(如BOOLEAN,參考練習07-02)
USING子句不能包括文字NULL, 需要使用NULL的地方使用一個未初始化的變數。(參考練習07-03)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1123728/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Referenc-PL/SQL動態SQL-何時需要動態SQLSQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-語句SQL
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在動態SQL塊中呼叫子程式。SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-savepoint語句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變數
- 複習execute immediate動態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
- Oracle動態執行語句(Execute Immediate)Oracle
- PLSQL Language Referenc-PL/SQL動態SQL-SQL隱碼攻擊-SQL隱碼攻擊技術-語句修改SQL
- 動態 SQL、EXECUTE IMMEDIATE、using、into、returningSQL
- EXECUTE IMMEDIATE動態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-練習:在USING子句中未初始化的變數表示NULLSQL變數Null
- PLSQL Language Referenc-PL/SQL控制語句-順序控制語句-NULLSQLNull
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUESQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-EXIT WHENSQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-覆蓋預設的鎖SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-WHILE迴圈SQLWhile
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUE WHENSQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-IF THEN ELSeIFSQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-IF THEN ELSESQL
- 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控制語句-迴圈語句-基本迴圈(EXIT語句)SQL
- 用動態SQL語句SQL
- 動態SQL語句 (轉)SQL