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为id选择合适的数据类型
Jun 07 MySQL
Mysql binlog日志文件过大的解决
Oct 05 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
mysql 排序失效
May 20 MySQL
mysql5.5中文乱码问题解决的有用方法
May 30 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
MySQL数据库简介与基本操作
May 30 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中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
几行js代码实现自适应
2017/02/24 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Python版微信红包分配算法
2015/05/04 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
艺术应用与设计个人的自我评价
2013/11/23 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
办公室秘书自我鉴定
2014/01/18 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
赔偿协议书范本
2014/04/15 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
旷工检讨书1000字
2015/01/01 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
新入职员工工作总结
2015/10/15 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书