mysql -存储过程的学习
生活随笔
收集整理的這篇文章主要介紹了
mysql -存储过程的学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
1.首先交代數據庫現有情況:
mysql> show tables; +-----------------------+ | Tables_in_my_leetcode | +-----------------------+ | user | +-----------------------+ 1 row in set (0.00 sec)mysql> select * from user; +------+----------+ | id | name | +------+----------+ | 1 | guanguan | | 2 | honey | | 3 | gholly | +------+----------+ 3 rows in set (0.00 sec)mysql>?2.使用簡單查詢來學習創建存儲過程:創建存儲過程,來實現對user表的名字的簡單查詢;
DELIMITER $$USE `my_leetcode`$$ -- 使用my_leetcode庫DROP PROCEDURE IF EXISTS `proc_emt`$$CREATE PROCEDURE `proc_emt`()BEGINselect name from user; END ; END$$ DELIMITER $$執行完存儲過程后的調用存儲過程結果為:
call proc_emt; #調用存儲過程drop procedure proc_emt; #刪除存儲過程3.查看存儲過程狀態:
show procedure status; --查看服務器所有的存儲過程狀態show procedure status like 'proc_emt'; --查看proc_emt存儲過程的狀態4.使用游標動態創建存儲過程
?以user表中的name值為參數動態創建test_${name}表
DELIMITER $$ USE `my_leetcode`$$DROP PROCEDURE IF EXISTS `proc_test1`$$CREATE PROCEDURE `proc_test1` () BEGINDECLARE var VARCHAR (20) ; --聲明一個參數變量DECLARE no_more_departments INTEGER DEFAULT 0 ; --聲明游標值DECLARE C_RESULT CURSOR FOR --定義游標名字為C_RESULTSELECT name FROM user ;DECLARE CONTINUE HANDLER FOR NOT FOUND --聲明當游標遍歷完全部記錄后將標志變量置成某個值SET no_more_departments = 1 ; OPEN C_RESULT ; --打開之前定義的游標REPEAT --循環語句的關鍵詞FETCH C_RESULT INTO var ; --取出每條記錄并賦值給相關變量varSET @strsql = CONCAT("create table `test_",var,"` (id int,app char)" --動態sql ) ;PREPARE t FROM @strsql ; --預處理需要執行的動態SQL,其中t是一個變量EXECUTE t ; --執行SQL語句DEALLOCATE PREPARE t ; --釋放掉預處理段UNTIL no_more_departments --循環語句結束ENDREPEAT; -- 循環語句結束 CLOSE C_RESULT ;-- 關閉游標 END$$ DELIMITER $$;存儲過程創建后的結果為:
此時表已經創建完畢
?
轉載于:https://my.oschina.net/u/2263272/blog/1550091
總結
以上是生活随笔為你收集整理的mysql -存储过程的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洛谷 1858 多人背包
- 下一篇: C#Array(数组) 一维、多维数组