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 相关文章推荐
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 MySQL
Mysql 用户权限管理实现
May 25 MySQL
MYSQL主从数据库同步备份配置的方法
May 26 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
解决MySQL Varchar 类型尾部空格的问题
Apr 06 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
MySQL 字符集 character
May 04 MySQL
mysql 获取相邻数据项
May 11 MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
JQuery 操作select标签实现代码
2010/05/14 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python抓取网页内容示例分享
2014/02/24 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
Python matplotlib实时画图案例
2020/04/23 Python
Python random模块的使用示例
2020/10/10 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
2014年五一活动策划方案
2014/03/15 职场文书
个人承诺书怎么写
2014/05/24 职场文书
节约粮食标语
2014/06/18 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
Go获取两个时区的时间差
2022/04/20 Golang
css3 文字断裂效果
2022/04/22 HTML / CSS