create table t_1 (id serial,name char(5)) ;Query OK, 0 rows affected (0.26 se" />
首先建立一個測試表:
mysql> create table t_1 (id serial,name char(5)) ;
Query OK, 0 rows affected (0.26 sec)
然后建立一個存儲過程:
delimiter $$
SET AUTOCOMMIT = 0$$
create procedure test01()
begin
declare v_cnt decimal (10) default 0 ;
dd:loop
insert into t_1 values (null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa'),(null,'aaaaa');
commit;
set v_cnt = v_cnt+10 ;
if v_cnt = 10000 then leave dd;
end if;
end loop dd ;
end;$$
delimiter ;
調用存儲過程向表格中插入數據:
mysql> select count(*) from t_1;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql>
mysql>
mysql> call test01;
Query OK, 0 rows affected (21.25 sec)
mysql> select count(*) from t_1;
+----------+
| count(*) |
+----------+
| 10000 |
+----------+
1 row in set (0.01 sec)
再次執行存儲過程,會插入更多數據:
mysql> call test01;
Query OK, 0 rows affected (21.70 sec)
mysql> select count(*) from t_1;
+----------+
| count(*) |
+----------+
| 20000 |
+----------+
1 row in set (0.01 sec)
注:上面的測試表結構,插入數據,表格行數,都可以根據需要進行修改,以便生成需要的數據測試環境。
對于MySQL的存儲過程,有以下幾個命令進行操作:
select name from mysql.proc where db='test';
select routine_name from information_schema.routines where routine_schema='test';
show procedure status where db='test';
show create procedure test.test01;
刪除存儲過程的命令:
drop procedure test01;
查詢數據庫中的存儲過程:
方法一:(直接查詢)
select `specific_name` from mysql.proc where db = 'your_db_name' and `type` = 'procedure'
方法二:(查看數據庫里所有存儲過程+內容)
show procedure status;
方法三:(查看當前數據庫里存儲過程列表)
select specific_name from mysql.proc ;
方法四:(查看某一個存儲過程的具體內容)
select body from mysql.proc where specific_name = 'your_proc_name';
查看存儲過程或函數的創建代碼 :
show create procedure your_proc_name;
show create function your_func_name;
刪除存儲過程:
drop procedure your_proc_name;
但如果測試表格中存在主鍵,使用上面的存儲過程可能出現問題,可以使用下面的存儲過程:
建立測試表:
CREATE TABLE t1(id1 INT,a1 INT,b1 INT,PRIMARY KEY(id1));
CREATE TABLE t2(id2 INT,a2 INT,b2 INT);
CREATE TABLE t3(id3 INT NUIQUE,a3 INT,b3 INT);
CREATE TABLE t4(id4 INT,a4 INT,b4 INT);
CREATE TABLE t5(id5 INT UNIQUE,a5 INT,b5 INT);
建立插入數據的存儲過程:
建立 while ···· end while存儲過程(執行前檢查執行條件):
DELIMITER //
CREATE PROCEDURE proc4()
begin
declare var int;
set var=0;
while var<6 do
insert into t1 values(var,var,var);
set var=var+1;
end while;
end;
//
DELIMITER ;
建立 repeat......end repeat 存儲過程(執行后檢查執行條件):
DELIMITER //
CREATE PROCEDURE proc01 ()
begin
declare v int;
set v=0;
repeat
insert into t1 values(v,v,v);
set v=v+1;
until v>=100
end repeat;
end;
//
DELIMITER ;
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com