首页/数据/数据库速查/存储过程与存储函数基础
SQL 语法52 条

存储过程与存储函数基础

把逻辑放在数据库侧:封装批量作业、减少网络往返;但调试、版本管理与移植性较差,业务逻辑仍建议放应用层。

数据库速查数据更新于 2026-10-12
用途库内程序
创建CREATE PROCEDURE / FUNCTION
分隔符DELIMITER 临时切换

存储过程示例

存储过程示例
DELIMITER $$
CREATE PROCEDURE sp_close_orders(IN p_days INT)
BEGIN
  UPDATE orders SET status = 'closed'
  WHERE status = 'pending' AND created_at < NOW() - INTERVAL p_days DAY;
  SELECT ROW_COUNT() AS affected;
END$$
DELIMITER ;

CALL sp_close_orders(30);

查看与管理

查看与管理
SHOW PROCEDURE STATUS LIKE 'sp_%';
SHOW CREATE PROCEDURE sp_close_orders\G
DROP PROCEDURE sp_close_orders;
存储过程里的业务逻辑难测试难审计,生产尽量保持薄封装(批处理/数据迁移),核心逻辑放应用层。

易错点

  • 创建时必须改 DELIMITER,否则分号会提前截断定义
  • 存储过程报错信息通常只给行号,调试体验差;日志里要自己加记录

数据来源与参考

  • MySQL 8.0 Reference Manual: Stored Programs and Views

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌