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安装后默认自带数据库的作用详解
Apr 27 MySQL
MySQL时间设置注意事项的深入总结
May 06 MySQL
MySQL sql_mode的使用详解
May 08 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
MySQL中VARCHAR与CHAR格式数据的区别
May 26 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
解决Mysql多行子查询的使用及空值问题
Jan 22 MySQL
MySQL数据库如何给表设置约束详解
Mar 13 MySQL
MySQL数据库查询之多表查询总结
Aug 05 MySQL
DQL数据查询语句使用示例
Dec 24 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
tp5框架的增删改查操作示例
2019/10/31 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
在Python中使用模块的教程
2015/04/27 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
Django中使用Celery的方法示例
2018/11/29 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
对python中UDP,socket的使用详解
2019/08/22 Python
python实现大量图片重命名
2020/03/23 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
养殖行业的创业计划书
2014/01/05 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
大学新生军训自我鉴定
2014/03/18 职场文书
公司离职证明标准样本
2014/10/05 职场文书
安全员岗位职责
2015/02/10 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
python pyhs2 的安装操作
2021/04/07 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技