【发布时间】:2021-09-20 12:18:13
【问题描述】:
我正在尝试解析一个 json 数组及其对象,以便在我的 mysql 过程中进一步使用它们。
但在读取值时它显示为空。 _list 将包含
[{"floor_id":"5","length":"40"},{"floor_id":"6","length":"61"}]
代码:
CREATE DEFINER=`admin`@`%` PROCEDURE `manage_room`(IN _id INT,
IN _list JSON,
INOUT v_message varchar(1000),
INOUT v_code int
)
BEGIN
declare _floor_number int ;
declare floor_list_length int;
set floor_list_length =3;
iterator:
LOOP
IF floor_list_length = 0 OR floor_list_length IS NULL THEN
LEAVE iterator;
END IF;
select JSON_EXTRACT(_rooms_list,CONCAT('$._list[', `floor_list_length`, '].floor_id')) as f ;
select JSON_EXTRACT(_rooms_list,CONCAT('$._list[', `floor_list_length`, '].length')) as l ;
insert into temp(val,txt) values (f,l);
end loop;
end
谁能纠正我做错了什么?
【问题讨论】:
-
试试:
SELECT JSON_EXTRACT(`_list`, '$[0].floor_id') as f ;. -
恕我直言,错误太多了,不知从何说起。输入参数是
_list,但您将其引用为_rooms_list。然后您在 JSON 路径中使用$._list,但该密钥不会出现在 JSON 内容中。你声明了一个变量_floor_number,但你没有使用它。然后你使用一个变量floor_list_length而不声明它或设置一个值。您尝试使用别名从 JSON 中选择字段,但未将它们设置为任何变量。然后你使用f和l,就好像它们是变量一样。这个过程完全是胡言乱语。 -
您编辑了您的问题,添加了
_floor_number的声明并将其设置为3。但是还有很多其他问题。 -
@BillKarwin 抱歉,这不是完整的代码。我的想法是给出一个想法,我想在程序中实现什么。我应该给出完整的代码:-(
标签: mysql json stored-procedures mysql-json