DECLARE cursor_name CURSOR FOR select_statement
這個語句聲明一個光標。也可以在子程序中定義多個光標,但是一個塊中的每一個光標必須有唯一的名字。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:申請域名、網頁空間、營銷軟件、網站建設、魚臺網站維護、網站推廣。
注意:SELECT語句不能有INTO子句。
OPEN cursor_name
這個語句打開先前聲明的光標。
FETCH cursor_name INTO var_name [, var_name] ...
這個語句用指定的打開光標讀取下一行(如果有下一行的話),并且前進光標指針。
CLOSE cursor_name
這個語句關閉先前打開的光標。
共享一個批量添加索引的游標,當一個庫中有上百張表結構一樣但是名稱不一樣的表,這個時候批量操作就變得簡單了。
#刪除創建存儲過程 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();
這里有幾個細節:
在聲明游標的時候記得修改自己需要查詢的條件
在預處理這里也需要改成對應的字段
在定義條件變量的時候這里我使用的是EXIT就是遇到錯誤就中斷,當然也可以使用CONTINUE 。
注意:由于MySQL在存儲過程當中無法將查詢出來的變量名直接作為表名來用,所以這里要用到動態拼接SQL的方法,但是通常的SET CONCAT的方法并不管用,所以這里就使用了PREPARE來進行預編譯。
在定義游標之前所以的定義都只能通過decalre定義,不能使用SET定義!!!!!!
當前文章:MySQL游標
網站網址:http://www.2m8n56k.cn/article4/gdshie.html
成都網站建設公司_創新互聯,為您提供微信小程序、企業建站、外貿網站建設、域名注冊、關鍵詞優化、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯