首页 > 其他分享 >12)自定义函数

12)自定义函数

时间:2023-05-29 22:11:55浏览次数:41  
标签:function 12 函数 自定义 no fn name

 1、创建自定义函数语法:

create function 函数名(参数1,参数2,...) returns 返回值数据类型
begin
    函数体
    return 语句;
end;

要注意:

1)、自定义函数是数据库的对象,创建时,需要指定该函数属于哪个数据库;

2)、同一个数据库内,自定义函数不能和已有的函数名重名;

3)、函数必须指定返回值数据类型,且与return语句返回值类型相匹配;

 

2、函数创建和调用:

1)无参函数类型:

创建函数:行号自动加一;

#无参类型
create function row_no_fn() returns int
begin
    set @row_no = @row_no + 1;
    return @row_no;
end;

接着我们调用函数;

set @row_no = 0;
select row_no_fn() 行号,student_name 姓名, student_no 学号 from student;

 2)有参数类型:

创建函数:给定学号,给出姓名;

#有参数类型:
create function get_name_fn(stu_no int) returns char(20)
begin
    declare stu_name char(20);
    select student_name into stu_name from student where student_no = stu_no;
    return stu_name;
end;

调用函数:

set @fn_no = '2023003';
select get_name_fn('2023003'),get_name_fn(@fn_no);

 

 要注意:

  1)、先写参数名 再写参数类型,逗号隔开;

  2)、在函数中,不允许出现有结果集产生的语句;所以使用select into语句,还要确保select 的结果集是单行的,赋值给单个变量;;

  3)、声明变量名或参数名不能和表明或字段名重名;

 

3、函数维护:

查看函数:

1)查看当前数据库中所有自定义函数信息:

show function status\G
show function status like '模式‘\G

此处的模式可以见下例:

show function status like '%\_fn'\G

2)查看指定数据库所有自定义函数名

select 自定义函数名 from mysql.proc where db='数据库名' and type = 'function';

此处我们可以查看我们自定义的两个函数:

不过,貌似8.0版本之后的mysql 数据库下的proc表 被删除了???

通过查阅资料,我们发现可以从information_schema数据库下的 parameters表和 routines 表结合看;

可以查看information_schema数据库下的parameters表:通过specific_name = ’自定义函数名‘ :

select * from parameters where specific_name = 'get_name_fn'\G

 

结合routines表,也是通过specific_name = ’自定义函数名‘;此表很详细了;

select * from routines where specific_name = 'get_name_fn'\G

 

3)查看指定函数名的详细信息:

show create function 函数名\G
show create function get_name_fn\G

删除函数:

drop function 函数名
drop function row_no_fn;

 

标签:function,12,函数,自定义,no,fn,name
From: https://www.cnblogs.com/xuan01/p/17441561.html

相关文章

  • jwt原理,jwt开发流程,drf-jwt快速使用,drf-jwt定制返回格式,drf-jwt自定义用户表签发,drf-j
    jwt原理:  JWT就是一段字符串,由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串1headerjwt的头部承载两部分信息:声明类型,这里是jwt声明加密的算法通常直接使用HMACSHA256公司信息......
  • CF1292 div.1 做题记录
    ACF题面若某一列的第\(i\)行禁止移动,那么看另一列的第\(i-1,i,i+1\)行是否存在禁止移动的格子,若存在为No,否则为Yes,这个只需要在改变一个点状态时判断即可。点击查看代码#include<bits/stdc++.h>#defineullunsignedlonglong#definelllonglong#definepiipair......
  • 第五单元 函数(方法)
    1.函数(方法)的简介函数,在C#中更多的被称为方法。它表示一个的类所具有的行为(方法,函数)。方法的作用封装一些公共的代码,以达到功能重复利用,减少代码冗余。例如,我们经常要进行输入,输出,系统于是帮我们封装好了Console.WriteLine(),Console.ReadLine()等方法。一个方法是把一......
  • jwt原理开发,drf-jwt快速使用和自定义使用,jwt签发认证源码分析
    一眼弄懂cookieSeesiontoken区别彻底弄懂cookie,session和token区别1jwt原理1.1使用jwt认证和使用session认证的区别1.2三段式eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEf......
  • hdu 4012(bfs+位压缩)
    思路:每次涂色以后必有一个格子的颜色是最终的颜色,否则这次涂色根本没意义,所以我们把每次涂色后哪些格子成为最终颜色的所有可能都入队,入队的元素是一个struct包含步数和最终颜色已确定的木块集合,这个集合必须用整数表示,所以用到状态压缩,因为最多只有16个格子,所以用16位的二进制来表......
  • Jmeter函数助手36-P
    P函数用于获取jmeter属性值。类似property函数属性名称:填入jmeter的属性名称默认值:缺省值,当获取属性值为空时则返回该值 1、填入属性名称获取属性值${__P(language,)} ......
  • Jmeter函数助手35-property
    property函数用于获取jmeter属性值。属性名称:填入jmeter的属性名称存储结果的变量名(可选)默认值:缺省值,当获取属性值为空时则返回该值 1、查看jmeter全局属性,测试计划右键“添加”->非测试元件->属性显示2、填入属性名称获取属性值${__property(language,,)}${__prop......
  • 【Oracle impdp/expdp】Big lesson from failure with impdp/expdp in 12c
     最近忙于做数据库12c-19c迁移,基于公司的情况,选用了最拿手的expdp/impdporacle自带的王者级别工具进行迁移。按照常规思路,一顿操作猛如虎,expdp直接选用full=y将数据全库导出,然后在19c中导入,无论是12c中的导出还是19c中的导入数据,没有任何的错误,然而在无意间,反过来去检查下两......
  • 通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?
    立即体验基于函数计算部署通义千问预体验:https://developer.aliyun.com/topic/aigc_fcAIGC浪潮已来,从文字生成到图片生成,AIGC的创造力让人惊叹,更多人开始探索如何使用AI提高生产效率,激发更多创作潜能,然而在实际应用中,AI技术的高门槛仍然让很多人望而却步,普通开发者或者没......
  • 【Quectel】EC20CEFHLG-128-SNNS物联网 LTE Cat 4 无线通信模块
    产品介绍:EC20是移远通信推出的LTE模块,采用LTE3GPPRel.9技术,支持下行速率100Mbps和上行速率50Mbps,同时在封装上兼容移远通信UMTS/HSPA+UC20模块,实现了从3G网络向4G网络轻松平滑过渡。EC20系列模块包含EC20-A,EC20-C和EC20-E三个版本,使其能够向后兼容现存的EDGE和GSM/GPRS网络,以......