存储过程

概述

本文档主要介绍如何使用平凯数据库的存储过程功能。

存储过程功能开关

tidb_enable_procedure 用于开启或者关闭存储过程功能,改变量的作用域为 global。当设置为 ON 时,允许执行 CREATE、ALTER、DROP PROCEDURE 以及 CALL 命令。当设置为 OFF 时,不允许执行 create procedure、alter procedure、call 命令。

自 v7.1.8 版本开始引入 tidb_enable_sp_param_substitute(默认 OFF)。开启后,支持存储过程本地变量下推;默认情况下,开启 tidb_enable_procedure 后会同时开启 tidb_enable_sp_param_substitute。支持单独关闭 tidb_enable_sp_param_substitute

创建存储过程

参见创建存储过程语法

删除存储过程

参见删除存储过程语法

修改存储过程

参见修改存储过程语法

调用存储过程

参见调用存储过程语法

查看存储过程

参见查看存储过程语法

风险 & 不兼容项

  • 平凯数据库存储过程内部不支持 DDL 7.1.8 之前版本
  • 存储过程内部 PREPARE 语句仅做调试使用,检查还不完善
  • 当前存储过程不支持 JSON 数据类型
  • /*!99999 */ 注释平凯数据库未实现
  • 游标暂时存在 OOM 的风险下个版本计划新增落盘功能 7.1.8 之前版本
  • limit 中的变量不能在本条语句中修改 7.1.8 之前版本
  • 如果 new_collations_enabled_on_first_bootstraptrue,则与 MySQL 8.0 一致,忽略大小写;如果 new_collations_enabled_on_first_bootstrapfalse,由于平凯数据库的架构问题,所以存储过程名不会忽略大小写。