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 sql_mode的使用详解
May 08 MySQL
mysql对于模糊查询like的一些汇总
May 09 MySQL
mysql外连接与内连接查询的不同之处
Jun 03 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
Mysql如何实现不存在则插入,存在则更新
Mar 25 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
php curl的深入解析
2013/06/02 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
php的4种常见运行方式
2015/03/20 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
解决laravel session失效的问题
2019/10/14 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
vue多次循环操作示例
2019/02/08 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python如何获取系统iops示例代码
2016/09/06 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Python贪心算法实例小结
2018/04/22 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
解决Python二维数组赋值问题
2019/11/28 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Python绘制组合图的示例
2020/09/18 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
财产公证书样本
2014/04/04 职场文书
安全责任书怎么写
2014/07/28 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
详解Redis集群搭建的三种方式
2021/05/31 Redis