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 05 MySQL
MySQL性能压力基准测试工具sysbench的使用简介
Apr 21 MySQL
教你用eclipse连接mysql数据库
Apr 22 MySQL
将图片保存到mysql数据库并展示在前端页面的实现代码
May 02 MySQL
MySQL 表空间碎片的概念及相关问题解决
May 07 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
MySQL系列之八 MySQL服务器变量
Jul 02 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
mysql insert 存在即不插入语法说明
Mar 25 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 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下使用无限生命期Session的方法
2007/03/16 PHP
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
python Opencv将图片转为字符画
2021/02/19 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
大学生毕业自我鉴定范文
2013/09/19 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript