存储过程
什么是存储过程?
存储过程(Stored Procedure)一组为了完成特定功能的SQL语句集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能,然后再给这个代码块取一个名字,在用到这个功能的时候调用就行了。
面对海量的数据操作时,不可能去一条一条去写sql语句,这时可以定义一个存储过程,让它自己根据定义好的规则去执行。
总之存储过程是好东西,很方便。
如:上万条数据插入。首先,建一张emp表
CREATE TABLE emp
(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=MyISAM DEFAULT CHARSET=utf8 ;
定义一个函数根据规则生成员工的ename
-- 删除自定的函数
drop function rand_string
-- rand_string函数.
create function rand_string(n INT)
returns varchar(255)
begin
declare chars_str varchar(100) default
'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
declare return_str varchar(255) default '';
declare i int default 0;
while i < n do
set return_str =concat(return_str,substring(chars_str,floor(1+rand()*52),1));
set i = i + 1;
end while;
return return_str;
end
定义一个函数根据随机产生部门编号
-- 删除自定的函数
drop function rand_num
-- rand_num函数
create function rand_num( )
returns int(5)
begin
declare i int default 0;
set i = floor(10+rand()*500);
return i;
end
定义一个存储过程
-- 传出参数out 传入参数in。
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
-- 关闭自动提交(避免吃一口饭,擦一次嘴),最后手动提交只提交一次。
set autocommit = 0;
repeat
set i = i + 1;
-- begin
insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
-- commit
until i = max_num
end repeat;
commit;
end;
-- 调用刚刚写好的函数, 18000条记录,从100001号开始
call insert_emp(100001,18000);
调用函数成功,生成18000条数据。
表中结果
不同的数据库管理工具会对定义函数中的“;”的解读不一样可能需要定义,我使用的是Navicat。想要了解存储过程的语法和参数的具体详解,去搜搜其他文章。
本人就先告辞了!!!!!!!!