MySQL 存儲過程簡單使用

下面是存儲過程的例子,刪除給定球員參加的所有比賽:

mysql> delimiter $$  #將語句的結束符號從分號;臨時改爲兩個$$(可以是自定義) mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) -> BEGIN ->   DELETE FROM MATCHES -> WHERE playerno = p_playerno; -> END$$ Query OK, 0 rows affected (0.01 sec) mysql> delimiter;  #將語句的結束符號恢復爲分號

解析:默認情況下,存儲過程和默認數據庫相關聯,如果想指定存儲過程創建在某個特定的數據庫下,那麼在過程名前面加數據庫名做前綴。 在定義過程時,使用 DELIMITER $$ 命令將語句的結束符號從分號 ; 臨時改爲兩個 $$,使得過程體中使用的分號被直接傳遞到服務器,而不會被客戶端(如mysql)解釋。

調用存儲過程:

call sp_name[(傳參)];

MySQL存儲過程的查詢

select name from mysql.proc where db='數據庫名';

或者

selectroutine_name from information_schema.routines where routine_schema='數據庫名';

或者

show procedure status where db='數據庫名';

=============================================

操作舉例:

-- 查詢存儲過程

elect name from mysql.proc where db='accl_ne_uc_ft2' and `type` = 'PROCEDURE' ;

-- 刪除存儲過程

DROP PROCEDURE zqtest


--- 100000000
-- 100001000


-- 創建存儲過程
DROP PROCEDURE IF EXISTS zqtest;
delimiter $$$          -- 聲明語句結束符,可以自定義
create procedure zqtest()      -- 聲明存儲過程
begin   -- 存儲過程開始
declare i int default 0;
set i=100000000;
start transaction;
while i<100001000 do

-- 要執行的sql語句
   insert into `um_address` (`id`, `ada`) values(i,'54864490')  


set i=i+1;
end while;
commit;
end  -- 存儲過程結束
$$$


-- 執行存儲過程
call zqtest();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章