美文网首页mysql/oracle数据库
存储函数(一)—— 创建存储函数

存储函数(一)—— 创建存储函数

作者: 程序员ken | 来源:发表于2020-07-27 23:45 被阅读0次

之前,我们列举不少mysql自带的函数,但是有些时候自带函数并不能很好满足我们的需求,此时就需要自定义存储函数了,存储函数与存储过程有些类似,简单来说就是封装一段sql代码,完成一种特定的功能,并返回结果。其语法如下:

CREATE FUNCTION 函数([参数类型 数据类型[,….]]) RETURNS 返回类型

BEGIN

SQL语句.....

RETURN (返回的数据)

END

与存储过程不同的是,存储函数中不能指定输出参数(OUT)和输入输出参数(INOUT)类型。存储函数只能指定输入类型而且不能带IN。同时存储函数可以通过RETURN命令将处理的结果返回给调用方。注意必须在参数列表后的RETURNS( 该值的RETURNS多个S,务必留意)命令中预先指定返回值的类型。如下创建一个计算斐波那契数列的函数

这里命名存储函数时使用了【fn_】作为开头,这样可以更容易区分与【sp_】开头的存储过程,从上述语句可以看出前面在存储过程分析的流程语句也是可以用于存储函数的,同样的,DECLARE声明变量和SET设置变量也可用于存储函数,当然包括定义异常处理语句也是适应的,请注意执行存储函数使用的是select关键字,可同时执行多个存储函数,嗯,存储函数就这样定义,是不是跟存储过程很相似呢?但还是有区别的,这点留到后面分析。ok~,为了进一步熟悉存储函数,下面编写一个用于向user插入用户的存储函数:

create function fn_get_bom_child(pid VARCHAR(10))

returns varchar(4000)

BEGIN

DECLARE temp VARCHAR(10000);

DECLARE tempChild VARCHAR(4000);

SET temp = '';

SET tempChild = pid;

WHILE tempChild IS NOT NULL

DO

SET temp = CONCAT(temp,',',tempChild);

SELECT GROUP_CONCAT(comp_material_id) into tempChild from t_bom_info where FIND_IN_SET(parent_material_id,tempChild);

END WHILE;

RETURN temp;

END

select * from t_bom_info where FIND_IN_SET(parent_material_id,fn_get_bom_child('K00123'))

本文来源于:宋文超super,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina),转载请注明出处。

相关文章

  • MySQL语法模板 SQL语句:函数、存储过程

    创建函数 创建存储过程 修改函数 修改存储过程 调用 删除函数 删除存储过程

  • 存储函数(一)—— 创建存储函数

    之前,我们列举不少mysql自带的函数,但是有些时候自带函数并不能很好满足我们的需求,此时就需要自定义存储函数了,...

  • 存储函数

    存储函数 创建无参存储函数get_name,有返回值语法: 删除存储函数getName语法: 调用存储方式一,PL...

  • 存储过程与函数

    存储过程与函数存储过程的定义存储过程的创建存储过程的操作自定义函数 存储过程与函数 存储过程的定义 运行效率高 降...

  • 17 存储过程

    过程: 函数: 过程是没有返回值的函数 存储过程: 存储过程语法 存储过程1--创建简单的存储过程 存储过程2--...

  • 创建存储函数、删除存储函数及 存储函数与存储过程的区别

    之前,我们列举不少mysql自带的函数,但是有些时候自带函数并不能很好满足我们的需求,此时就需要自定义存储函数了,...

  • oracle之存储过程、函数、包

    参考链接 Oracle创建存储过程、创建函数、创建包——博客园@helong ORACLE执行存储过程权限不足—...

  • 创建空存储函数

    最近在学习创建存储函数,我的第一个目标是创建一个什么都不做的存储函数,看了下语法非常简单,但实际创建过程还是碰到了...

  • spark之rdd

    RDD的创建 从集合中创建 makeRDD函数创建 parallelize函数创建 从外部存储中创建 从其他RDD...

  • 黑猴子的家:mysql 存储过程练习

    1、创建存储过程或函数实现传入用户名和密码,插入到admin表中 2、创建存储过程或函数实现传入女神编号,返回女神...

网友评论

    本文标题:存储函数(一)—— 创建存储函数

    本文链接:https://www.haomeiwen.com/subject/gakxrktx.html