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中的布尔值,怎么存储false或true
Jun 04 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
MySQL基于索引的压力测试的实现
Nov 07 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
pt-archiver 主键自增
Apr 26 MySQL
mysql如何查询连续记录
May 11 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
mysql数据库隔离级别详解
Jun 16 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 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
Angular(5.2->6.1)升级小结
2018/12/27 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
python实现简单登陆流程的方法
2018/04/22 Python
python使用udp实现聊天器功能
2018/12/10 Python
Python logging模块handlers用法详解
2020/08/14 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
linux面试题参考答案(4)
2013/01/28 面试题
优秀德育工作者事迹材料
2014/05/07 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
交通事故案件代理词
2015/05/23 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
决心书格式及范文
2019/06/24 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
Python源码解析之List
2021/05/21 Python
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android
python缺失值填充方法示例代码
2022/12/24 Python