CREATE、DROP、ALTER (資料庫/表/索引/視圖)INSERT、UPDATE、DELETE、REPLACESELECT (標準 SQL 限制較嚴)SET、COMMIT、ROLLBACKCREATE PROCEDURE p() DELETE FROM t;
CREATE PROCEDURE p() SET @x = 5;
SELECT 回傳結果集給客戶端CREATE PROCEDURE p() DROP TABLE t;
CREATE PROCEDURE p() SELECT 'a';
CREATE/ALTER/DROP PROCEDURE、CREATE/DROP FUNCTION、CREATE/DROP TRIGGERUSE database — MySQL 假定預設資料庫即為過程工作場所但可跨資料庫操作:CREATE PROCEDURE db5.p1() DROP DATABASE db5
CALL p1();
括號 必須 保留。效果等同直接執行過程體內的 SQL:
-- 過程體: SELECT * FROM t;
CALL p1(); -- 等同執行 SELECT * FROM t;
CREATE PROCEDURE p2()
LANGUAGE SQL
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'A Procedure'
SELECT CURRENT_DATE, RAND() FROM t;
| 子句 | 用途 | 備註 |
|---|---|---|
| LANGUAGE SQL | 聲明主體語言 | 預設值,為 DB2 相容保留,未來可能支援其他語言 |
| NOT DETERMINISTIC | 告知優化器:相同輸入可能產生不同輸出 | 含 RAND()、NOW() 等非確定性函數時必須聲明;目前優化器暫不參考 |
| SQL SECURITY DEFINER | 執行時檢查「建立者」權限 | 預設值;另可選 INVOKER (檢查「調用者」權限) |
| COMMENT | 說明文字 | 顯示於 SHOW CREATE PROCEDURE |