MySQL 存儲過程中替換數組文本,為什么提示“大字段信息不存在”?

MySQL 存儲過程中替換數組文本,為什么提示“大字段信息不存在”?

mysql 存儲過程中替換數組文本出錯?

在使用存儲過程替換數組文本時遇到問題,提示”大字段信息不存在”。

以下代碼用于從 eb_store_product 表中提取數組文本并替換部分內容:

delimiter // drop procedure if exists `replacename`// create procedure replacename() begin     declare c int default 0;     declare r json;     declare id int default 0;     declare i int default 0;      declare result cursor for select id, slider_image from `eb_store_product`;      select count(*) into c from eb_store_product;     open result;      repeat         set i = i + 1;         fetch result into id, r;          set @t = replace(json_extract(r, '$[0]'), 'ceshi', 'chenggong');      until i >= c     end repeat;      close result;     select @t; end// delimiter ;  call replacename();

然而,執行該存儲過程返回 “大字段信息不存在” 的錯誤。

解決方案:

代碼中缺少更新 eb_store_product 表中 slider_image 字段的步驟。需要在循環體內添加以下語句:

update eb_store_product set slider_image = json_replace(r, '$[0]', @t) where id = id;

這是修改后的存儲過程:

DELIMITER // DROP PROCEDURE IF EXISTS `replacename`// CREATE PROCEDURE replacename() BEGIN     DECLARE c INT DEFAULT 0;     DECLARE r JSON;     DECLARE id INT DEFAULT 0;     DECLARE i INT DEFAULT 0;      DECLARE result CURSOR FOR SELECT id, slider_image FROM `eb_store_product`;      SELECT COUNT(*) INTO c FROM eb_store_product;     OPEN result;      REPEAT         SET i = i + 1;         FETCH result INTO id, r;          SET @t = REPLACE(JSON_EXTRACT(r, '$[0]'), 'ceshi', 'chenggong');          -- 更新 eb_store_product 表中的 slider_image 字段         UPDATE eb_store_product SET slider_image = JSON_REPLACE(r, '$[0]', @t) WHERE id = id;      UNTIL i >= c     END REPEAT;      CLOSE result;     SELECT @t; END// DELIMITER ;  CALL replacename();

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享