数据库的存储过程

打印 上一主题 下一主题

主题 809|帖子 809|积分 2437

1 MySQL的存储过程

1.1 存储过程的定义

存储过程是一组为了完成特定功能的SQL语句聚集。
1.2 存储过程的原理

存储过程在利用过程中是将常用或者复杂的工作预先利用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要利用该存储过程时,只需要调用它即可。存储过程在实行上比传统SQL速度更快、实行服从更高。
1.3 存储过程的优点

1、实行一次后,会将天生的二进制代码驻留缓冲区,提高实行服从 2、SQL语句加上控制语句的聚集,机动性高 3、在服务器端存储,客户端调用时,降低网络负载 4、可多次重复被调用,可随时修改,不影响客户端调用 5、可完成全部的数据库操纵,也可控制数据库的信息访问权限
1.4 创建存储过程

1)修改SQL语句竣事符 delimiter $$
2)创建存储过程 use 库名 create procedure 存储过程名() begin SQL语句序列; end$$
3)把竣事符改回分号 delimiter 
4)调用存储过程 call 存储过程名;
2 存储过程模拟实行

2.1 创建存储过程

  1. DELIMITER $$                            #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
  2. CREATE PROCEDURE Proc()                 #创建存储过程,过程名为Proc,不带参数
  3. -> BEGIN                                #过程体以关键字 BEGIN 开始
  4. -> select * from Store_Info;            #过程体语句
  5. -> END $$                               #过程体以关键字 END 结束
  6. DELIMITER ;                             #将语句的结束符号恢复为分号
复制代码

2.2 调用查看存储过程

  1. ##调用存储过程##
  2. CALL Proc;
  3. ##查看存储过程##
  4. SHOW CREATE PROCEDURE [数据库.]存储过程名;      #查看某个存储过程的具体信息
  5. SHOW CREATE PROCEDURE Proc;
  6. SHOW PROCEDURE STATUS [LIKE '%Proc%'] \G
复制代码


2.3 删除存储过程

删除存储过程

存储过程内容的修改方法是通过删除原有存储过程,之后再以雷同的名称创建新的存储过程。假如要修改存储过程的名称,可以先删除原存储过程,再以不同的命名创建新的存储过程。
DROP PROCEDURE IF EXISTS Proc; #仅当存在时删除,不添加 IF EXISTS 时,假如指定的过程不存在,则产生一个错误


2.4 存储过程的传参(相当于别名)

  1. in      传入参数
  2. out     传出参数
  3. inout   传入传出参数
  4. create procedure 存储过程名(in 传入参数名 参数数据类型, out 传出参数名 参数数据类型)
  5. begin
  6.    select 字段 into 传出参数 from 表 where 字段 = 传入参数;
  7. end$$
  8. call  存储过程名(参数值|@变量名; @变量名);      #传入参数指定的值可以是纯量值,也可以是变量名;传出参数指定的值只能是变量名
复制代码

2.5 存储过程控制语句

  1. create table t (id int(10));
  2. insert into t values(10);
复制代码
(1)条件语句if-then-else ···· end if



(2)循环语句while ···· end while


(3)脚本实现一键创建十万个文件

  1. delimiter $$
  2. create procedure proc7 ()
  3. begin
  4. declare i int;
  5. set i = 1;
  6. create table test03 (id int primary key auto_increment, name varchar(20));
  7. while i <= 100000
  8. do insert into test03 (name) values (concat ('student', i));
  9. set i = i + 1;
  10. end while;
  11. end$$
  12. delimiter ;
  13. call proc7
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表