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 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
MySQL root密码的重置方法
Apr 21 MySQL
MySQL数字类型自增的坑
May 07 MySQL
MySQL外键约束(FOREIGN KEY)案例讲解
Aug 23 MySQL
SQL基础的查询语句
Nov 11 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
MySQL读取JSON转换的方式
Mar 18 MySQL
Mysql使用全文索引(FullText index)的实例代码
Apr 03 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
MySQL transaction事务安全示例讲解
Jun 21 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
js实现点赞效果
2020/03/16 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
2015年班干部工作总结
2015/04/29 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书