亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2024-11-08 286

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

mysql存儲過程替換json內容遇到的問題

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

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 ;
登錄后復制

運行該代碼后,會出現以下錯誤提示:

大字段信息不存在。

解決方案

問題出現在代碼中缺少對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表中對應行的slider_image字段,從而解決了替換json內容后無法顯示的問題。

相關閱讀