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 Router的安装部署
Apr 24 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
MySQL完整性约束的定义与实例教程
May 30 MySQL
Mysql systemctl start mysqld报错的问题解决
Jun 03 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
mysql数据插入覆盖和时间戳的问题及解决
Mar 25 MySQL
MySQL 数据表操作
May 04 MySQL
Mysql 一主多从的部署
May 20 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 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
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
js使用心得分享
2015/01/13 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
python实现杨辉三角思路
2017/07/14 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
wxpython绘制音频效果
2019/11/18 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
金融专业个人求职信
2013/09/22 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
就业自我评价
2014/02/04 职场文书
小学班主任寄语大全
2014/04/04 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
毕业生面试求职信
2014/06/23 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
小学校长汇报材料
2014/08/20 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
失恋33天观后感
2015/06/11 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
oracle重置序列从0开始递增1
2022/02/28 Oracle