存储过程

存储过程

什么是存储过程?

存储过程(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。想要了解存储过程的语法和参数的具体详解,去搜搜其他文章。
本人就先告辞了!!!!!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值