国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL使用游標批量處理進行表操作

2024-07-24 12:45:01
字體:
來源:轉載
供稿:網友

一、概述

本章節介紹使用游標來批量進行表操作,包括批量添加索引、批量添加字段等。如果對存儲過程、變量定義、預處理還不是很熟悉先閱讀我前面寫過的關于這三個概念的文章,只有先了解了這三個概念才能更好的理解這篇文章。

理解MySQL變量和條件://www.survivalescaperooms.com/article/81375.htm

理解Mysql prepare預處理語句://www.survivalescaperooms.com/article/81378.htm

理解MySQL存儲過程和函數://www.survivalescaperooms.com/article/81381.htm

二、正文

1、聲明光標

DECLARE cursor_name CURSOR FOR select_statement

這個語句聲明一個光標。也可以在子程序中定義多個光標,但是一個塊中的每一個光標必須有唯一的名字。

注意:SELECT語句不能有INTO子句。

2、打開光標

DECLARE cursor_name CURSOR FOR select_statement

這個語句打開先前聲明的光標。

3、前進光標

FETCH cursor_name INTO var_name [, var_name] ...

這個語句用指定的打開光標讀取下一行(如果有下一行的話),并且前進光標指針。

4、關閉光標

CLOSE cursor_name

這個語句關閉先前打開的光標。

 5、批量添加索引

共享一個批量添加索引的游標,當一個庫中有上百張表結構一樣但是名稱不一樣的表,這個時候批量操作就變得簡單了。

#刪除創建存儲過程DROP PROCEDURE IF EXISTS FountTable;DELIMITER $$CREATE PROCEDURE FountTable()BEGIN DECLARE TableName varchar(64); #聲明游標 DECLARE cur_FountTable CURSOR FOR SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='front' AND TABLE_NAME LIKE 'student%'; DECLARE EXIT HANDLER FOR not found CLOSE cur_FountTable; #打開游標 OPEN cur_FountTable; REPEAT FETCH cur_FountTable INTO TableName; #定義預處理 SET @SQLSTR1 = CONCAT('create index Flag on ','`',TableName,'`',' (Flag); '); SET @SQLSTR2 = CONCAT('create index State on ','`',TableName,'`',' (State); '); SET @SQLSTR3 = CONCAT('create index upload on ','`',TableName,'`',' (upload); '); SET @SQLSTR4 = CONCAT('create index ccFlag on ','`',TableName,'`',' (lockFlag); '); SET @SQLSTR5 = CONCAT('create index comes on ','`',TableName,'`',' (comes); '); ###SET @SQLSTR=CONCAT(@SQLSTR1,@SQLSTR2,@SQLSTR3,@SQLSTR4,@SQLSTR5 ); PREPARE STMT1 FROM @SQLSTR1; PREPARE STMT2 FROM @SQLSTR2; PREPARE STMT3 FROM @SQLSTR3; PREPARE STMT4 FROM @SQLSTR4; PREPARE STMT5 FROM @SQLSTR5; EXECUTE STMT1; EXECUTE STMT2; EXECUTE STMT3; EXECUTE STMT4; EXECUTE STMT5; DEALLOCATE PREPARE STMT1; DEALLOCATE PREPARE STMT2; DEALLOCATE PREPARE STMT3; DEALLOCATE PREPARE STMT4; DEALLOCATE PREPARE STMT5; # SELECT @SQLSTR; UNTIL 0 END REPEAT; #關閉游標 CLOSE cur_FountTable;END $$DELIMITER ;CALL FountTable();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建水县| 仁怀市| 昔阳县| 平昌县| 共和县| 长垣县| 邵阳县| 望城县| 余干县| 崇仁县| 沽源县| 东乡族自治县| 裕民县| 娱乐| 封开县| 桐城市| 巴林左旗| 东乡县| 清涧县| 栾城县| 新余市| 建宁县| 汶上县| 普宁市| 寿阳县| 富宁县| 邛崃市| 淮阳县| 桐乡市| 鸡东县| 斗六市| 黎川县| 隆子县| 许昌县| 乐东| 张北县| 叶城县| 水富县| 廊坊市| 沁水县| 高尔夫|