MySQL 存儲過程替換 JSON 內(nèi)容時,為什么會出現(xiàn)“大字段信息不存在”的錯誤?

MySQL 存儲過程替換 JSON 內(nèi)容時,為什么會出現(xiàn)“大字段信息不存在”的錯誤?

mysql存儲過程替換json內(nèi)容遇到的問題

一位開發(fā)者在使用mysql存儲過程時遇到了問題,無法替換json內(nèi)容并顯示替換后的文本。問題代碼如下:

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//  call replacename();// delimiter ;

運行該代碼后,會出現(xiàn)以下錯誤提示:

大字段信息不存在。

解決方案

問題出現(xiàn)在代碼中缺少對eb_store_product表中slider_image字段的更新。修改后的正確代碼如下:

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();

修改后的代碼中添加了update語句,用于更新eb_store_product表中對應(yīng)行的slider_image字段,從而解決了替換json內(nèi)容后無法顯示的問題。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊6 分享