91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 游標

發布時間:2020-07-08 23:12:03 來源:網絡 閱讀:319 作者:bxst 欄目:MySQL數據庫

光標聲明

聲明光標
DECLARE cursor_name CURSOR FOR select_statement

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

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

打開光標
OPEN cursor_name

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

前進光標
FETCH cursor_name INTO var_name [, var_name] ...

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

關閉光標
CLOSE cursor_name

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

 

批量添加索引

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

MySQL 游標

#刪除創建存儲過程
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();

MySQL 游標

這里有幾個細節:

  • 在聲明游標的時候記得修改自己需要查詢的條件

  • 在預處理這里也需要改成對應的字段

  • 在定義條件變量的時候這里我使用的是EXIT就是遇到錯誤就中斷,當然也可以使用CONTINUE 。

 

注意:由于mysql在存儲過程當中無法將查詢出來的變量名直接作為表名來用,所以這里要用到動態拼接SQL的方法,但是通常的SET CONCAT的方法并不管用,所以這里就使用了PREPARE來進行預編譯。

 在定義游標之前所以的定義都只能通過decalre定義,不能使用SET定義!!!!!!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

花莲市| 行唐县| 昌宁县| 黑龙江省| 抚顺市| 弥渡县| 金平| 库车县| 河北区| 容城县| 江山市| 铁岭市| 拉萨市| 沙田区| 晋宁县| 班戈县| 喜德县| 龙口市| 突泉县| 汽车| 沙田区| 绍兴市| 望奎县| 图木舒克市| 洱源县| 盐山县| 乳山市| 岚皋县| 锡林浩特市| 永胜县| 应用必备| 吉安市| 镇雄县| 鸡东县| 屏南县| 龙州县| 江城| 海安县| 敖汉旗| 阿拉尔市| 永年县|