
存储过程应专注原子数据操作与简单控制流避免业务逻辑参数用p_、变量用v_、游标用c_前缀错误处理须用EXIT HANDLERROLLBACKRESIGNAL游标遍历需显式检查NOT FOUND。存储过程里别写太多业务逻辑MySQL 存储过程不是应用层硬塞订单校验、状态机跳转、HTTP 调用封装哪怕只是模拟进去只会让调试变慢、测试失效、部署耦合。它该干的事很窄原子性数据操作 简单条件分支 结果集组装。SELECT / INSERT / UPDATE / DELETE 是主力CASE 和 IF 控制流向即可别写嵌套 5 层的 IF需要调外部服务交给应用层——存储过程里用 SLEEP() 或 GET_LOCK() 模拟等待是权宜之计不是设计遇到“这个逻辑放哪儿都别扭”大概率是拆分粒度不够把校验抽成函数DELIMITER $$ CREATE FUNCTION ...把主流程拆成多个小存储过程用应用协调参数命名必须带前缀避免冲突MySQL 存储过程参数和局部变量同域不加区分会覆盖、静默出错。比如参数叫 user_id你又声明 DECLARE user_id INT DEFAULT 0;后面所有对 user_id 的读写都指向局部变量传进来的值彻底丢失。统一用 p_ 前缀标识参数p_user_id、p_status用 v_ 前缀标识局部变量v_count、v_max_retry游标变量也遵守c_order_cursor而非 cursor这个习惯在 SHOW CREATE PROCEDURE 查看定义时特别有用一眼能分清作用域错误处理不能只靠 CONTINUE HANDLERCONTINUE HANDLER FOR SQLEXCEPTION 捕获后若不做显式 ROLLBACK 或日志记录事务可能半途卡住后续语句继续执行结果不可预测。更糟的是它还会吞掉原错误码让调用方只收到模糊的 1329 No data - zero rows fetched。 Ideogram Ideogram是一个全新的文本转图像AI绘画生成平台擅长于生成带有文本的图像如LOGO上的字母、数字等。