4)mysql自定义函数和存储过程

Mysql存储过程、函数和游标基本使用 实验6.1 存储过程实验 (1)实验目的 掌握数据库PL/SQL编程语言,以及数据库存储过程的设计和使用方法 (2)实验内容和要求 存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。掌握PL/SQL编程语言和编程规范,规范设计存储过程。 (3)实验重点和难点 实验重点:存储过程定义和运行。 实验难点:存储过程的参数传递方法。 (1)存储过程的概念定... 阅读详情

十、自定义函数

这里写图片描述

函数体

这里写图片描述

例子:

创建不带参数的自定义函数:
mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)
    -> RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');
Query OK, 0 rows affected (0.00 sec)

调用方式
mysql> SELECT f1();
+-------------------------------+
| f1()                          |
+-------------------------------+
| 2016年12月19日 17点:00分:03秒             |
+-------------------------------+
1 row in set (0.04 sec)

mysql>
带参数的函数,一个返回两个的和
create function f2 (num1 smallint unsigned,num2 smallint unsigned)
returns smallint unsigned
return (num1+num2);

调用
select f2(2,4);

删除函数

drop function f2;

创建具有复合结构函数体的自定义函数
修改分隔符:DELEMITER 分隔符
当函数体内需要执行的是多条语句时,要使用BEGIN…END语句
且当编写函数体内容的时候,需要使用 DELIMITER 关键字将分隔符先修改为别的,否则编写语句的时候写到 ‘;’ 的时候会直接执行,导致函数编写失败

创建一个函数,在调用函数的时候,插入一条记录到t_user表
DELIMITER //
CREATE FUNCTION ADD_USER(username VARCHAR(20))
RETURNS INT UNSIGNED
BEGIN
-- 插入数据
INSERT t_user(username) VALUES(username); 
-- 获取插入的数据的id
RETURN LAST_INSERT_ID();
END
//
DELIMITER ;

十一、存储过程

这里只是基本使用,更多关于存储过程,查看:
http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html

11.1 mysql解析sql的流程

每次发送一个sql,都需要执行一次这个流程,分析语法的正确性,如果使用存储过程,那么只有在第一次的时候且分析语法正确性,然后放入缓存,从而提高效率

这里写图片描述

11.2 存储过程的特点

这里写图片描述

11.3 创建语法

这里写图片描述

  • 存储过程的调用方式:
    1.CALL sp_name([parameter[,…]]) 如果存储过程包含参数,则必须有小括号
    2.CALL sp_name[()] 如果存储过程不包含参数,则小括号可有可无

  • 删除存储过程:
    DROP PROCEDURE [IF EXISTS] sp_name

  • 修改存储过程
    ALTER PROCEDURE sp_name [characteristic …]
    COMMENT ‘string’
    |{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    只能修改存储过程中的注释、当前内容的类型,并不能修改过程体
    因此,要修改过程体的话,需要先删除存储过程,然后重建

11.4 例子:

定义存储过程:根据id删除用户
mysql> delimiter //
mysql> create procedure removeUserById(in p_id int unsigned)
    -> begin
    -> delete from t_user where id=p_id;
    -> end
    -> //
Query OK, 0 rows affected (0.09 sec)

查看记录
mysql> select * from t_user;
    -> //
+----+----------+------+------+
| id | username | sex  | age  |
+----+----------+------+------+
|  1 | lhp      | 1    |   10 |
|  2 | lhp2     | 3    |   15 |
|  4 | lhp3     | 1    |   10 |
|  5 | lhp4     | 2    |   10 |
|  6 | lhp5     | 3    |   10 |
|  8 | lhp333   | 3    | NULL |
+----+----------+------+------+
6 rows in set (0.07 sec)

调用存储过程
mysql> delimiter ;
mysql> call removeUserById(8);
Query OK, 1 row affected (0.10 sec)

查看记录
mysql> select * from t_user;
+----+----------+------+------+
| id | username | sex  | age  |
+----+----------+------+------+
|  1 | lhp      | 1    |   10 |
|  2 | lhp2     | 3    |   15 |
|  4 | lhp3     | 1    |   10 |
|  5 | lhp4     | 2    |   10 |
|  6 | lhp5     | 3    |   10 |
+----+----------+------+------+
5 rows in set (0.00 sec)

mysql>

创建带有IN和OUT类型的参数:

删除一个用户,且返回删除之后的总数
mysql> delimiter //
mysql> create procedure removeAndReturn (in p_id int unsigned,out userNums int unsigned)
    -> begin
    -> delete from t_user where id = p_id;
    -> select count(id) from t_user into userNums;
    -> end
    -> //
Query OK, 0 rows affected (0.05 sec)

mysql> delimiter ;
mysql> CALL removeAndReturn(27,@nums);
Query OK, 1 row affected (0.04 sec)

mysql> select @nums;
+-------+
| @nums |
+-------+
|     5 |
+-------+
1 row in set (0.00 sec)

mysql>

说明:
调用方法:CALL removeAndReturn(27,@nums);—-@nums 传参数
查看返回值: SELECT @nums;

@nums为用户变量
- 1.用户变量:以”@”开始,形式为”@变量名”
用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效
- 2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名
对所有客户端生效。只有具有super权限才可以设置全局变量
- 3.会话变量:只对连接的客户端有效。
- 4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量
declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量

十二、存储过程与自定义函数的区别

这里写图片描述

个人学习笔记(慕课网)

图解目标检测 之 YOLO 算法 最全原理详解 YOLO 一.背景 YOLO(You Only Look Once: Unified, Real-Time Object Detection),是Joseph Redmon和Ali Farhadi等人于2015年提出的基于单个神经网络的目标检测系统。在2017年CVPR上,Joseph Redmon和Ali Farhadi又发表的YOLO 2,进一步提高了检测的精度和速度。 二.YOLO算法的网... 阅读详情

相关推荐

告别MRT!用ArcGIS脚本批量处理MODIS数据,从HDF到NDVI/ET成品图全流程(附Python代码)

本文详细介绍了使用ArcGIS Python脚本自动化处理MODIS数据的全流程,从HDF文件提取到生成NDVI/ET成品图。通过优化子数据集提取、智能镶嵌策略和投影转换等核心步骤,大幅提升处理效率,告别传统MRT工具的手工操作。附带的Python代码可直接应用于实际项目,特别适合批量处理大规模遥感数据。

weixin_30872337的博客 220

sql之自定义函数(4)

知识点: 自定义函数定义 创建、调用、删除自定义函数 自定义函数的应用 深入自定义函数 复合结构 局部变量的创建、赋值;全局变量的创建 流程控制语句:条件语句(if、case)、控制循序条件语句(leave跳出循环、iterate跳出当前循环)、循环语句(loop、repeat、while) 一.定义 用户自定义函数(user-defined function,UD...

yiguang_820的博客 1916

AIGC实战:用ComfyUI和Lora微调打造专属原神角色(含完整工作流)

本文详细介绍了如何利用ComfyUI和Lora微调技术打造专属原神风格角色,涵盖从环境配置、数据集准备到工作流构建和Lora训练的全过程。通过模块化节点设计和高级控制技术,创作者可实现高度个性化的AIGC艺术创作,提升二次元角色生成的效率与质量。

weixin_29185199的博客 348

力扣数据库题目:第N高的薪水(中等)

编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。 Id Salary 1 100 2 200 3 300 例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。 getNthHighestSalary(2) 200 代码: CREATE ...

qq_43453731的博客 496

利用Python搭建用户画像系统

用户画像是当下很多企业都会提及的概念,多数情况下会和大数据以及营销挂钩。本文将对用户画像的相关知识进行进行简单的介绍,并利用Python去实现一个简单的用户画像系统。 1.什么是用户画像 用户画像可以理解成是海量数据的标签,根据用户的目标、行为和观点的差异,将他们区分为不同的类型,然后每种类型中抽取出典型特征,赋予名字、照片、一些人口统计学要素、场景等描述,形成一个人物原型 。 用户画像 =...

黎荣恒的博客 3万+

基因家族的鉴定-基于Windows系统上的HMMER

基因家族的鉴定-基于Windows系统上的HMMER。

liangjinghui123的博客 3246

MySQL 创建存储函数(CREATE FUNCTION)

存储函数和存储过程一样,都是在数据库中定义一些 SQL 语句的集合。存储函数可以通过 return 语句返回函数值,主要用于计算并返回一个值。而存储过程没有直接返回值,主要用于执行操作。在 MySQL 中,使用语句来创建存储函数,其语法形式如下:注意:在具体创建函数时,函数名不能与已经存在的函数名重名。除了上述要求外,推荐函数名命名(标识符)为 function_xxx 或者 func_xxx。

3092

华为OD机试真题2026双机位C卷 C语言 实现【主次关联成环警告】

在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况:

MISAYAONE的博客 172

MYSQL中如何创建存储函数和存储过程(中篇)

上篇中说道存储函数和存储过程的创建,本篇讲变量的使用以及光标的使用。查询语句大都会返回大量的记录,此时需要在存储过程和存储函数中使用光标来逐条读取查询结果的数据。光标必须在声明处理程序前,并且变量和条件还必须在声明光标前辈声明

mx13156的博客 833

微信小程序 - 实现大文件上传分片/切片+本地选择文件上传超大文件,小程序大文件切片上传+断点续传+上传进度条+失败自动重传完整运行示例源码,支持图片、视频、文档各种文件(支持上传单个文件或批量上传)

微信小程序实现大文件上传,实现分片大文件上传,微信小程序 分片 断点续传 大文件上传,微信小程序实现大文件上传 分片上传 进度条,小程序文件分片上传,微信小程序如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,微信小程序实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,微信小程序wx.uploadFile,小程序上传视频,小程序上传文档,实现大文件上传(切片上传)实现大文件上传到服务器教程,支持批量多

🏆 前端领域优质创作者 1万+

快速生成2D卡通人物的AI工具:开启Live2D角色创作的新时代

随着这一创新工具的推出,我们正见证着Live2D角色创作进入了一个全新的阶段。它不仅极大地简化了角色设计的过程,也为广大创作者提供了一种全新的表达方式。对于那些渴望将脑海中的构思迅速转化为现实的人来说,这无疑是一大福音。现在就访问项目主页,开始探索无限可能吧!t=O83A项目主页https://human3daigc.github.io/Textoon_webpage/

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 4834

MYSQL中如何创建存储过程和存储函数(上篇)

存储程序分为存储过程和存储函数。在MySQL中创建存储过程和存储函数的语句分别是create procedure 和create function。使用call语句来调用存储过程,只能用输出变量返回值。

mx13156的博客 2409

基于STM32的智能血氧、心率、体温、血压监测系统

摘要:本文设计了一款基于STM32F103C8T6的多功能健康监测系统,可实时检测血氧、心率、体温和血压四项生理参数。系统集成MAX30102、DS18B20等传感器模块,采用OLED显示和蓝牙无线传输技术,实现一键血压测量、阈值报警及手机APP数据管理功能。硬件设计包含传感器采集、电源管理、显示报警等模块;软件采用模块化架构,实现数据采集处理、蓝牙通讯等功能。测试表明系统测量准确可靠,为家庭健康监测提供了便携解决方案。未来可扩展更多监测参数和智能分析功能。

3254968421的博客 771

MySQL学习笔记 4:自定义函数和MySQL存储过程

一、自定义函数UDF 1.  语法结构 CREATE FUNCTION functon_name([参数名 参数类型,...]) RETURNS 返回值类型 函数体 2.例子 DELIMITER // CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS INT UNSIGNED BEGIN INSERT test(user

Seawood_Xie的博客 467

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL存储过程和存储函数

MySQL存储过程和存储函数 MySQL中提供存储过程与存储函数机制,我们先将其统称为存储程序,一般的SQL语句需要先编译然后执行,存储程序是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,当用户通过指定存储程序的名字并给定参数(如果该存储程序带有参数)来调用才会执行。 1.1 存储程序优缺点 优点 通常存储过程有助于提高应用程序的性能。当创建,存储过程被编译之后,就存储在数据库中。 但是,MySQL实现的存储过程略有不同。 MySQL存储过程按需编译。 在编译存储过程之后,MySQL将其放

緑水長流*z 6万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Mysql 创建存储过程和函数及各种例子

Mysql 创建存储过程和函数及各种例子

@素素~的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【MySQL进阶】自定义函数和存储过程入门

本文主要介绍如何创建和使用MySQL函数和存储过程。

weixin_37780776的博客 1724

MySQL 自定义函数和存储过程的区别

1.MySQL自定义函数简介   在MySQL中使用自定义函数也需要相应的要求,语法如下, 创建新函数: Create function function_name(参数列表) returns返回值类型 函数体内容 相关说明, 函数名:应该合法的标识符,并且不应该与已有的关键字冲突。一个函数应该属于某数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库     ,...

Tony_Cheung的博客 1936

MySQL-存储过程和函数

MySQL-存储过程和函数(万字总结)

真正的大师永远怀着一颗学徒的心 1985

MySQL自定义函数与存储过程

一、       Mysql 自定义函数 自定义函数 (user-defined function UDF)是一种对mysql扩展的途径,其用法和内置函数相同。 自定义函数的两个必要条件:1、参数(不是必有的,例如select version())2返回值 (必有的)。函数可以返回任意类型的值,同样可以接收这些类型的参数,参数与返回值没有必然的内在联系   创建自定义函数语法:    

谁肯落幕年华的博客 4675

mysql 自定义函数function,函数和存储过程的区别

1.MySQL自定义函数简介  在MySQL中使用自定义函数也需要相应的要求,语法如下,  创建新函数:    Create function function_name(参数列表)    returns返回值类型    函数体内容  相关说明,函数名:应该合法的标识符,并且不应该与已有的关键字冲突。一个函数应该属于某数据库,可以使用db_name.funciton_name的形式执行当前函数所属...

Meiko记录 4772

MySQL存储过程和自定义函数

1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。

浅谈 894

mysql 存储过程和自定义函数 详解

1. 定义自定义函数: 用于创建一个新的自定义函数。BEGIN-- 函数体END;: 函数名称。: 参数列表,参数可以是IN类型。RETURNS: 指定函数返回值的类型。2. 参数定义IN: 定义输入参数。MySQL 的自定义函数只支持IN类型的参数。BEGINEND;3. 函数体BEGIN/END: 标记函数体的开始和结束。BEGIN-- 函数逻辑END;4. 返回值RETURN: 用于返回函数的计算结果。5. 属性或: 标记函数是否是确定性的。

qq_42572322的博客 1048

【MySQL】MySQL函数、自定义函数、存储过程

Mysql运算符和函数 字符函数 删除指定字符串 删除前指定字符串 删除后续的 删除前后的 字符串替换 截取字符串,mysql中字符从1开始 查询包含%的字串 _下划线代表任意一个字符 数值运算符和函数 日期时间函数 日期格式化 SELECT DATE_FORMAT('20

自由世界的专栏 1848

Mysql 存储过程和函数

BEGIN-- 定义局部变量-- 定义条件-- 在满足条件时执行的代码块ELSE-- 在不满足条件时执行的代码块END IF;-- 定义处理程序BEGIN-- 在发生异常时执行的代码块ROLLBACK;-- 回滚事务RESIGNAL;-- 重新抛出异常END;-- 执行可能引发异常的代码-- ...END //DELIMITER;SHOW CREATE PROCEDURE 存储过程名称;

qq_34690079的博客 1493

MySQL8-常用函数以及自定义函数和存储过程总结

MySQL8-常用函数以及自定义函数和存储过程总结

IT谢彪的博客 1000
上一篇: 3)mysql 函数的使用
下一篇: 5)mysql sql的使用技巧及优化(1)
hp柠檬茶
博客等级 码龄11年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值