mysql创建存储过程及函数详解


Posted in MySQL onDecember 04, 2021

1. 存储过程

1.1. 基本语法

create procedure name ([params])

UNSIGNED [characteristics] routine_body

 params : in|out|inout 指定参数列表 代表输入与输出

routine_body: SQL代码内容,以begin ........   end

characteristics: 指定存储过程特性,包含5种

                           1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句

1.2 创建一个指定执行权限的存储过程

create DEFINER=`root`@`%` procedure name ([params])

UNSIGNED [characteristics] routine_body

DEFINER:指明谁有权力来执行。

1.3 DELIMITER 的使用

      ”DELIMITER //“ 表示设置“//”符号为结束语,因为mysql中默认语句结束为分号‘;',为了避免存储过程与mysql语句符号冲突,所以有时使用DELIMITER来改变结束语符号,要配合end //来使用;

 示例:创建一个root账户执行的存储过程,输出给定字符串的长度

DELIMITER //
CREATE definer=`root`@`%` PROCEDURE `avgFruitPrice`(
in f_string VARCHAR(200)
)
BEGIN
    select length(f_string);
END//

2. 创建函数 

函数的创建与存储过程相同

示例

DELIMITER //
CREATE definer=`root`@`%` FUNCTION `my_length`(
f_string VARCHAR(200)
)
RETURNS INT(11)
UNSIGNED  NO SQL
BEGIN
    return length(f_string);
END//

注意: 创建函数需要注意3个地方,

1.  RETURNS: 需指定返回类型

2. UNSIGNED  NO SQL 需指定存储过程特性

3.return: 返回需要的数据

遇见的错误:

mysql创建存储过程及函数详解

如报错如上信息就是没有指定存储过程特性。

存储过程函数中可以通过mysql查询结果为其参数复制: 其语句为select .... into

begin

declare onename char(50) default‘0';

declare twoname char(50);

select f_name, b_name into onename, twoname from t_user where id =1;

.......

end//

说明:

declare: 存储过程及函数内部定义变量

default:默认值

到此这篇关于mysql创建存储过程及函数详解的文章就介绍到这了,更多相关mysql存储过程及函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql优化
Apr 06 MySQL
.Net Core导入千万级数据至Mysql的步骤
May 24 MySQL
MySQL8.0无法启动3534的解决方法
Jun 03 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 MySQL
mysql5.6主从搭建以及不同步问题详解
MySQL图形化管理工具Navicat安装步骤
全面盘点MySQL中的那些重要日志文件
关于mysql中时间日期类型和字符串类型的选择
Nov 27 #MySQL
VS2019连接MySQL数据库的过程及常见问题总结
Linux7.6二进制安装Mysql8.0.27详细操作步骤
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 #MySQL
You might like
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
日期 时间js控件
2009/05/07 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
python如何定义带参数的装饰器
2018/03/20 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
港湾网络笔试题
2014/04/19 面试题
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
小学教师国培感言
2014/02/08 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
论文答谢词
2015/01/20 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
欢送会主持词
2015/07/01 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL