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 全文检索的使用示例
Jun 07 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
MySQL 用 limit 为什么会影响性能
Sep 15 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
mysql 获取时间方式
Mar 20 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
Dec 24 MySQL
关于MySQL中explain工具的使用
May 08 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 curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
CI框架常用函数封装实例
2016/11/21 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
js获取form的方法
2015/05/06 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
React服务端渲染(总结)
2017/07/01 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
Python实现八大排序算法
2016/08/13 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
建国大业观后感
2015/06/01 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技