导读:本期聚焦于小伙伴创作的《MySQL中CREATE ROUTINE命令到底是什么?如何用它创建存储过程和函数?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《MySQL中CREATE ROUTINE命令到底是什么?如何用它创建存储过程和函数?》有用,将其分享出去将是对创作者最好的鼓励。

在MySQL里,CREATE ROUTINE并不是直接用来写存储过程代码的语句,而是一项系统权限。它决定了哪个数据库账号可以在某个库中创建存储过程和存储函数。真正写逻辑用的是CREATE PROCEDURE和CREATE FUNCTION,但执行这两条之前,账号必须拥有CREATE ROUTINE权限。

MySQL中CREATE ROUTINE命令到底是什么?如何用它创建存储过程和函数?

CREATE ROUTINE权限的授权语法

管理员通过GRANT语句把该权限授予用户,基本写法如下:

-- 授予用户dev在test库下创建例程的权限
GRANT CREATE ROUTINE ON test.* TO 'dev'@'localhost';

-- 同时授予修改和执行的权限,方便开发调试
GRANT CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON test.* TO 'dev'@'localhost';

创建存储过程示例

拥有权限后,使用CREATE PROCEDURE定义过程。注意DELIMITER用于改结束符,避免与内部分号冲突。

DELIMITER //

CREATE PROCEDURE test.get_user_count(OUT cnt INT)
BEGIN
  SELECT COUNT(*) INTO cnt FROM test.users;
END //

DELIMITER ;

创建存储函数示例

存储函数通过CREATE FUNCTION定义,必须声明返回类型,且函数体里不能用返回结果集的SELECT。

DELIMITER //

CREATE FUNCTION test.add_prefix(name VARCHAR(20))
RETURNS VARCHAR(30)
DETERMINISTIC
BEGIN
  RETURN CONCAT('usr_', name);
END //

DELIMITER ;

相关权限的区别

容易混淆的几个权限可以这样理解:

  • CREATE ROUTINE:允许新建存储过程和函数。
  • ALTER ROUTINE:允许修改或删除已创建的例程。
  • EXECUTE:允许调用并执行例程,但不一定能创建。
权限名能否创建能否修改能否执行
CREATE ROUTINE
ALTER ROUTINE
EXECUTE

常见误区

有人以为在命令行敲CREATE ROUTINE就能生成过程,其实它会报语法错误。正确做法是先授权,再用CREATE PROCEDURECREATE FUNCTION。另外,若使用二进制日志且函数不是DETERMINISTIC,可能需要开启log_bin_trust_function_creators,否则创建函数会被拒绝。

小结:CREATE ROUTINE是MySQL权限体系里控制例程创建能力的一环,配合具体定义语句才能完成开发工作。

在排查无法创建例程的问题时,可先用SHOW GRANTS FOR 'dev'@'localhost';确认账号权限,再检查库名和语法是否正确。

MySQLCREATE_ROUTINE存储过程存储函数权限控制修改时间:2026-07-24 18:00:33

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。