1、表值函数
很久以前用了几年SQL Server,SQL_Server的用户自定函数支持返回一个结果集,被称为表值函数,很遗憾,MySQL没有表值函数一说,函数也不能返回结果集。
2、利用Josn及json函数让MySQL也可以返回表值函数
代表如下:
-- 构造数据
drop table if exists json_t;
create table json_t
(
a int,
b int,
c varchar(10)
);
insert into json_t
values(1,1,'a'),(2,2,'b'),(3,3,'c');
-- 创建函数
drop function if exists test_j;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `test_j`() RETURNS json
READS SQL DATA
begin
set @j=JSON_ARRAY();
select json_arrayagg(json_object('a',a,'b',b,'c',c)) into @j from json_t ;
return @j;
end$$
DELIMITER ;
-- 返回结果
select jst.* from (select test_j() as t) as t, json_table( t.t,"$[*]"
COLUMNS( rowid for ordinality,
a int PATH "$.a" DEFAULT '0' ON EMPTY DEFAULT '0' ON ERROR,
b int PATH "$.b" DEFAULT '0' ON EMPTY DEFAULT '0' ON ERROR,
c varchar(10) PATH "$.c" null ON EMPTY null ON ERROR
)) as jst
复制
上面查询能得到下面结果
利用json与json函数让自定义函数能返回结果集,达到表值函数的效果
方法是让自定义函数返回json数组,再利用json_table解析json数组返回我们关系型数据库熟悉的多行结果集。
最后修改时间:2025-01-09 14:36:50
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1216次阅读
2025-03-13 11:40:53
MySQL8.0统计信息总结
闫建(Rock Yan)
450次阅读
2025-03-17 16:04:03
Ogg23ai高手必看-MySQL Innodb Cluster跟oracle的亲密接触
曹海峰
437次阅读
2025-03-04 21:56:13
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
436次阅读
2025-03-13 14:38:19
SQL优化 - explain查看SQL执行计划(一)
金同学
375次阅读
2025-03-13 16:04:22
MySQL突然崩溃?教你用gdb解剖core文件,快速锁定“元凶”!
szrsu
321次阅读
2025-03-13 00:29:43
MySQL生产实战优化(利用Index skip scan优化性能提升257倍)
chengang
307次阅读
2025-03-17 10:36:40
[MYSQL] xtrabackup备份报错Unable to obtain lock分析
大大刺猬
231次阅读
2025-02-28 16:43:00
一键装库脚本3分钟极速部署,传统耗时砍掉95%!
IT邦德
223次阅读
2025-03-10 07:58:44
MySQL8.0直方图功能简介
Rock Yan
210次阅读
2025-03-21 15:30:53