首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

動態 SQL 四種格式完整指南

     編輯:MySQL 資料庫相關知識

Format 1:EXECUTE IMMEDIATE

適用於無參數、無結果集的 DDL 或單次執行陳述式。

EXECUTE IMMEDIATE SQLStatement {USING TransactionObject};

Format 2:PREPARE + EXECUTE

含輸入參數的非查詢陳述式(INSERT/UPDATE/DELETE)。

PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject};
EXECUTE DynamicStagingArea USING {ParameterList};

Format 3:游標/程序 + PREPARE + OPEN/FETCH/CLOSE

返回結果集的查詢,參數在 OPEN 時繫結。

DECLARE Cursor DYNAMIC CURSOR FOR DynamicStagingArea;
PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject};
OPEN DYNAMIC Cursor {USING ParameterList};
FETCH Cursor INTO HostVariableList;
CLOSE Cursor;

Format 4:DESCRIBE + DESCRIPTOR

完全動態:查詢結構在執行期才知,需用 DESCRIBE 取得中繼資料,再用 DESCRIPTOR 繫結輸入/輸出。

DECLARE Cursor DYNAMIC CURSOR FOR DynamicStagingArea;
PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject};
DESCRIBE DynamicStagingArea INTO DynamicDescriptionArea;
OPEN DYNAMIC Cursor USING DESCRIPTOR DynamicDescriptionArea;
FETCH Cursor USING DESCRIPTOR DynamicDescriptionArea;
CLOSE Cursor;

選擇建議

  • 靜態 SQL 結構、少量參數 → Format 1/2。
  • 動態查詢、固定結果結構 → Format 3。
  • 完全未知結構(如通用報表工具) → Format 4。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved