當前位置:編程學習大全網 - 編程軟體 - mysql使用遊標遍歷數據進行批量針對性更新數據,急求mysql大神解答

mysql使用遊標遍歷數據進行批量針對性更新數據,急求mysql大神解答

根據妳的資料,正確的答案應該如下:望采納

CREATE DEFINER=`root`@`localhost` PROCEDURE `P_updateUd18`(`Param` int(11))

BEGIN

declare Rcount,i,j,k,Rparentid,myId int(11) default 0;

declare Robjname,Robjname23,Robjname45,Robjname67,Robjname89 varchar(9) default "";

select count(id) into Rcount from ud18;

repeat

select id,objname into myId,Robjname from ud18 order by id limit i,1;

set Robjname23=SUBSTRING(Robjname,2,2);

set Robjname45=SUBSTRING(Robjname,4,2);

set Robjname67=SUBSTRING(Robjname,6,2);

set Robjname89=SUBSTRING(Robjname,8,2);

if Robjname89>0 then

set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,7),"00","'");

prepare stmt from @sql;

EXECUTE stmt;

set Rparentid=@abc;

update ud18 set parentid=Rparentid where id=myId;

elseif Robjname67>0 then

set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,5),"0000","'");

prepare stmt from @sql;

EXECUTE stmt;

set Rparentid=@abc;

update ud18 set parentid=Rparentid where id=myId;

elseif Robjname45>0 then

set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,3),"000000","'");

prepare stmt from @sql;

EXECUTE stmt;

set Rparentid=@abc;

update ud18 set parentid=Rparentid where id=myId;

elseif Robjname23>0 then

-- set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,1),"00000000","'");

-- prepare stmt from @sql;

-- EXECUTE stmt;

-- set Rparentid=@abc;

update ud18 set parentid=0 where id=myId;

else

set j=0;

end if;

set i=i+1;

until i>Rcount end repeat;

END;

  • 上一篇:為啥奇駿車鑰匙儀表盤顯示id錯誤
  • 下一篇:簡述JAVA程序的編輯編譯和運行過程
  • copyright 2024編程學習大全網