寫這邊文章的目的,是想結合mysql 儲存過程+函式完成乙個批量刪除的功能吧...正好也好加深下對procedure和function的熟練操作吧...
廢話不多說,我就直接上表結構啦哈,如下:
create table dept(執行以下命令檢視mysql版本是否開啟了函式功能id int unsigned primary key auto_increment,
deptno mediumint unsigned not null default 0,
dname varchar(20) not null default "",
loc varchar(13) not null default ""
)engine=innodb default charset=utf8;
create table emp(
id int unsigned primary key auto_increment,
empno mediumint unsigned not null default 0,/*編號*/
ename varchar(20) not null default "",/*姓名*/
job varchar(9) not null default "",/*工作*/
mgr mediumint unsigned not null default 0,/*上級編號*/
hiredate date not null,/*入職時間*/
sal decimal(7,2) not null, /*薪水*/
comm decimal(7,2) not null,/*紅利*/
deptno mediumint unsigned not null default 0/*部門編號*/
)engine=innodb default charset=utf8;
執行後再看是否生效
建立函式(作用:生產隨機字串)
delimiter $$建立完後我們可以檢視建立的函式:create function rand_string(n int) returns varchar(255)
begin
declare chars_str varchar(100) default 'qwertyuiopasdfghjklzxcvbnm';
declare return_str varchar(255) default '';
declare i int default 0;
while i
建立函式(作用:隨機生產部門編號)
delimiter $$
create function rand_num() returns int(5)
begin
declare i int default 0;
set i=floor(100+rand()*10);
return i;
end $$
接著我們來建立儲存過程:
1:建立往emp表中插入資料的儲存過程
delimiter $$2:建立往dept表中插入資料的儲存過程create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
/*把autocommit設定成0*/
set autocommit= 0;
repeat
set i=i+1;
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
values((start+i),rand_string(6),'salesman',0001,curdate(),2000,400,rand_num());
until i=max_num end repeat;
commit;
end $$
delimiter $$可以檢視已經建立的procedure:create procedure insert_dept(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit=0;
repeat
set i=i+1;
insert into dept(deptno,dname,loc) values((start+i),rand_string(10),rand_string(8));
until i=max_num end repeat;
commit;
end $$
上面2個show create procedure請分開執行,我這裡直截屏就只顯示乙個procedure啦
那我們可以開始呼叫儲存過程了
call insert_dept(1,100);//從deptno為1起插入100條隨機生成資料執行後我的部分資料如下:
call insert_emp(1001,50000);//從empno為1001起插入50000條隨機生成資料執行後部分截圖如下:
至此,整個批量插入完成...關於儲存過程和函式,手冊上有更詳細的介紹啦,我這裡就不再贅述了吧....
無論從事什麼行業,只要做好兩件事就夠了,乙個是你的專業、乙個是你的人品,專業決定了你的存在,人品決定了你的人脈,剩下的就是堅持,用善良專業和真誠贏取更多的信任。不忘初心 方得始終!
mysql使用儲存過程 函式實現批量插入
寫這邊文章的目的,是想結合mysql 儲存過程 函式完成乙個批量刪除的功能吧.正好也好加深下對procedure和function的熟練操作吧.廢話不多說,我就直接上表結構啦哈,如下 create table dept id int unsigned primary keyauto incremen...
mysql 函式 儲存過程
set global log bin trust function creators 1 1.函式func splitstringtotal 將字串按指定方式分割,並計算單元總數 drop function if exists func get splitstringtotal create fun...
mysql儲存過程和函式使用例項
1.需求 根據輸入的年份,月份,和當前系統的年份比較,不滿1年按1年計算,多出1年11個月也按1年計算。2.計算得出來的使用年份,計算車輛殘值。3.儲存過程 delimiter use dbtest drop procedure ifexists sp calc year create proced...