-- UPDATE prescription_medicine SET -- PATIENT_ID = REPLACE(PATIENT_ID,"‘",""); DROP TABLE IF EXISTS tmp_update_replace; CREATE TABLE if NOT EXISTS `tmp_update_replace` SELECT (@i:=@i+1) as sid, CONCAT(‘UPDATE ‘,TABLE_NAME,‘ SET ‘,COLUMN_NAME,‘ = REPLACE(‘,COLUMN_NAME,‘,\"\‘\",\"\");‘) as exe_text FROM information_schema.`COLUMNS` ,(select @i:=0) as b WHERE TABLE_SCHEMA = ‘sxey‘ AND TABLE_NAME in (‘prescription_medicine‘,‘prescription_medicine_new‘,‘DEPT_INFO‘); -- 创建执行函数 DROP PROCEDURE IF EXISTS exe_query_queue; delimiter $$ CREATE PROCEDURE exe_query_queue(IN tbName varchar(100),IN colNameId varchar(100),IN colNameExe varchar(100)) BEGIN DECLARE SQL_TEXT1 VARCHAR(500); DECLARE SQL_TEXT2 VARCHAR(500); DECLARE SQL_TEXT3 VARCHAR(500); DECLARE nR INT; DECLARE I INT; SET SQL_TEXT1 =CONCAT(‘SELECT COUNT(*) into @numRow From ‘,tbName); SET @tmp1 = SQL_TEXT1; PREPARE exeSql1 from @tmp1; EXECUTE exeSql1; DEALLOCATE PREPARE exeSql1; -- 执行定义语句 SQL_TEXT1 SET nR= @numRow; -- 执行定义语句 SQL_TEXT2 -- SELECT @numRow; IF nR is not NULL THEN SET I = 1; WHILE I < nR DO SET SQL_TEXT2 =CONCAT(‘SELECT ‘,colNameExe,‘ into @exeSqlText2 FROM ‘,tbName,‘ WHERE ‘,colNameId,‘ =‘,I,‘;‘); -- 执行SQL_TEXT3 -- SELECT SQL_TEXT2; SET @tmp2 = SQL_TEXT2; PREPARE exeSql2 from @tmp2; EXECUTE exeSql2; SET SQL_TEXT3 = @exeSqlText2; DEALLOCATE PREPARE exeSql2; -- SELECT SQL_TEXT3; SET @tmp3 = SQL_TEXT3; PREPARE exeSql3 from @tmp3; EXECUTE exeSql3; DEALLOCATE PREPARE exeSql3; SET I=I+1; END WHILE; end if; END $$ delimiter ; CALL exe_query_queue(‘tmp_update_replace‘,‘sid‘,‘exe_text‘); -- 删除执行结果 DROP TABLE IF EXISTS tmp_update_replace; -- 删除执行函数 DROP PROCEDURE IF EXISTS exe_query_queue;