概述
目录
一. 存储过程概述
1.1.什么是存储过程
1.2.存储过程的优缺点
二. 存储过程语法
2.1.创建存储过程
2.2.调用存储过程
2.3.删除存储过程
2.4.查看存储过程
三. 存储过程实例
四. 数据库专栏
一. 存储过程概述
1.1.什么是存储过程
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。MySQL 5.0 版本开始支持存储过程。
它是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
1.2.存储过程的优缺点
优点:
- 存储过程在服务器端运行,执行速度快。
- 存储过程执行一次后,经过第一次编译后就不需要再次编译,提高了系统性能。
- 确保数据库的安全。使用存储过程可以完成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限
缺点:
- 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
- 存储过程的性能调校与撰写,受限于各种数据库系统。
二. 存储过程语法
2.1.创建存储过程
创建存储过程语法:
create procedure 存储过程名(参数列表)
begin
-- 过程体
end;
实例:根据部门编号,返回此部门所有员工的总工资。
drop procedure if exists getsalbydeptno;
create procedure getsalbydeptno(in dno int,out salsum decimal(7,2))
begin
select sum(sal) into salsum from emp where deptno=dno;
end;
- 存储过程参数有三种模式:in,out和inout。
- in:传入参数(默认)
- out:传出参数
- inout:此参数是in和out参数的组合。这意味着存储过程可以修改此参数并将新值传递回调用程序。
- 注意:参数名不能与字段名重名。
- 在select语句中,使用into关键词给传出参数赋值。
2.2.调用存储过程
调用存储过程语法:
call getsalbydeptno(10,@salsum);
select @salsum;
- 使用call关键词调用存储过程。
- 传出参数使用 @salsum 的形式声明。
2.3.删除存储过程
删除存储过程语法:
drop procedure [if exists] 存储过程名;
删除getsalbydeptno存储过程:
drop procedure if exists getsalbydeptno;
2.4.查看存储过程
查看数据库中的所有存储过程:
show procedure status;
三. 存储过程实例
需求:公司员工离职后,需要从emp表中删除此员工的信息。但是为了能够保存历史记录,所以删除的员工信息需要备份到emp_copy表中。下面使用存储过程来完成这个功能:
/* 创建存储过程 */
drop procedure if exists backup;
create procedure backup(in eno int)
begin
declare tex int default 0;
select 1 into tex from information_schema.tables where table_name='emp_copy';
if tex<>1 then
create table emp_copy select * from emp where 1=0;
end if;
insert into emp_copy select * from emp where empno=eno;
delete from emp where empno=eno;
end;
/* 调用存储过程 */
/* call backup(7369); */
- declare tex int default 0: 声明一个变量tex,并赋默认值为0;
- select 1 into tex from information_schema.tables where table_name='emp_copy':从系统表information_schema.tables中查询是否存在 emp_copy 表,如果存在,给变量tex 赋值为 1;
- if tex<>1 then ... end if:判断tex变量的值是否为1;
四. 数据库专栏
https://blog.csdn.net/weixin_53919192/category_11813282.html?spm=1001.2014.3001.5482https://blog.csdn.net/weixin_53919192/category_11813282.html?spm=1001.2014.3001.5482
最后
以上就是火星上往事为你收集整理的带你了解数据库的存储过程一. 存储过程概述二. 存储过程语法三. 存储过程实例四. 数据库专栏 的全部内容,希望文章能够帮你解决带你了解数据库的存储过程一. 存储过程概述二. 存储过程语法三. 存储过程实例四. 数据库专栏 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复