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

SQL 預存程序核心概念、四大優勢、分類與建立語法詳解

     編輯:MySQL 資料庫相關知識

定義

將常用或複雜的 SQL 邏輯預先編寫、編譯並以指定名稱儲存,調用時只需 EXECUTE 即可自動完成。

與一般 SQL 差異

一般 SQL 每次執行皆需編譯;預存程序僅建立時編譯一次,後續執行直接運行執行計畫,大幅提升效能。

四大優勢

  1. 效能優:避免重複編譯,提升執行速度
  2. 封裝複雜邏輯:多表 UPDATE/INSERT/QUERY/DELETE 結合事務處理
  3. 重複使用:減少開發工作量,集中維護
  4. 安全性高:可授權特定用戶執行特定程序,不直接授予表權限

三大分類

類型前綴用途
系統預存程序sp_系統設定、資訊查詢、管理工作 (如 sp_help)
擴展預存程序xp_呼叫作業系統功能 (如 xp_cmdshell 'ping 10.8.16.1')
使用者自定義自訂業務邏輯核心,本文重點

建立語法 (T-SQL 風格)

CREATE PROCEDURE procedure_name
    [@parameter data_type] [OUTPUT]
    [WITH] {RECOMPILE | ENCRYPTION}
AS
    sql_statement

參數說明

  • OUTPUT:標記該參數可回傳值
  • WITH RECOMPILE:每次執行重新編譯(應對參數嗅探問題)
  • WITH ENCRYPTION:加密程序內容,防止檢視

MySQL 專屬語法 (5.0+)

CREATE PROCEDURE proc_name ([IN|OUT|INOUT] param_name type)
BEGIN
    -- SQL 陳述式
END;

MySQL 使用 DELIMITER 變更語句結束符以支援複合語句。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved