首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 存儲過程開發規範:DELIMITER 陷阱、變量作用域、流程控制與 50+ 字符串函數速查表

     編輯:MySQL 綜合教學

MySQL 存儲過程開發全規範:從語法陷阱到字符串函數庫

核心語法陷阱避坑指南

1. DELIMITER 必須成對使用

  類型聲明前綴作用域訪問方式
  局部變量DECLARE var INT DEFAULT 0;無BEGIN...END 塊內直接用變量名
  會話變量SET @var = 1;@整個連接會話@var
  系統變量SET GLOBAL sort_buffer_size=...@@全局/會話@@global.var / @@session.var

規範: 過程內優先用局部變量,避免 @ 變量跨過程污染。

3. 註釋風格統一

-- IF-THEN-ELSEIF-ELSE
IF condition1 THEN
  -- statements
ELSEIF condition2 THEN
  -- statements
ELSE
  -- statements
END IF;

-- CASE 條件值匹配
CASE expr
  WHEN value1 THEN statements
  WHEN value2 THEN statements
  ELSE statements
END CASE;

-- CASE 條件表達式
CASE
  WHEN condition1 THEN statements
  WHEN condition2 THEN statements
  ELSE statements
END CASE;

循環結構

  模式關鍵字方向規範
  輸入IN調用者→過程默認,不可修改
  輸出OUT過程→調用者過程內必須賦值
  雙向INOUT雙向調用者初始化,過程修改


50+ 字符串函數分類速查表

大小寫轉換

CHAR_LENGTH(str) / CHARACTER_LENGTH(str)  -- 字符數
LENGTH(str) / OCTET_LENGTH(str)           -- 字節數
BIT_LENGTH(str)                           -- 二進制位數

子串提取與定位

CONCAT(str1, str2, ...)           -- 連接
CONCAT_WS(sep, str1, str2, ...)   -- 帶分隔符連接
INSERT(str, pos, len, newstr)     -- 替換指定區間
REPLACE(str, from_str, to_str)    -- 全量替換
REVERSE(str)                      -- 反轉
REPEAT(str, count)                -- 重複
SPACE(n)                          -- n 個空格

去除與填充

FIND_IN_SET(str, strlist)     -- 集合中查找 (逗號分隔)
FIELD(str, str1, str2, ...)   -- 列表中位置
ELT(n, str1, str2, ...)       -- 位置取值
STRCMP(expr1, expr2)          -- 比較 (-1/0/1)
LIKE / NOT LIKE               -- 模式匹配 (% _)
REGEXP / RLIKE                -- 正則表達式

編碼與轉換

FORMAT(x, d)      -- 數字格式化 #,###.##
SOUNDEX(str)      -- 英文發音編碼
SPACE(n)          -- 空格字符串

壓縮與解壓 (MySQL 5.7+)

LOAD_FILE(file_name)  -- 讀取文件內容 (需 FILE 權限、secure_file_priv)

調試與最佳實踐

  1. 用 SELECT ... INTO @debug_var; 輸出中間值
  2. 建立 debug_log(msg VARCHAR(1000)) 表記錄關鍵節點
  3. 複雜邏輯拆分為多個小過程,單元測試後組合
  4. 避免在循環中執行 DDL/大事務
  5. 動態 SQL 必須用 PREPARE/EXECUTE/DEALLOCATE PREPARE 三部曲
  6. 異常處理:DECLARE CONTINUE HANDLER FOR SQLEXCEPTION ...
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved