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 Show Profile
Apr 05 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
Jun 23 MySQL
MySQL系列之一 MariaDB-server安装
Jul 02 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
MySQL索引 高效获取数据的数据结构
May 02 MySQL
MySQL 原理与优化之Update 优化
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/03/02 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
降低PHP Redis内存占用
2017/03/23 PHP
php经典趣味算法实例代码
2020/01/21 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Django自定义认证方式用法示例
2017/06/23 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
室内设计专业个人的自我评价
2013/12/18 职场文书
环境建设实施方案
2014/03/14 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
市场营销工作计划书
2014/09/15 职场文书
2014年教学工作总结
2014/11/13 职场文书
教师节校长致辞
2015/07/31 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
mysql知识点整理
2021/04/05 MySQL
redis实现的四种常见限流策略
2021/06/18 Redis
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS