数据库:存储程序

数据库:存储程序目录一 什么是存储程序 二 为什么使用存储程序 三 存储程序分类四 存储过程 1 存储过程参数的 3 中模式 2 流程控制语句 3 示例代码五 存储函数六 触发器一 什么是存储程序 存储程序指的是一组存储和

大家好,欢迎来到IT知识分享网。

目录

一、什么是存储程序?

二、为什么使用存储程序?

三、存储程序分类

四、存储过程

1.存储过程参数的3中模式

2.流程控制语句

3.示例代码

五、存储函数

六、触发器


一、什么是存储程序?

存储程序指的是一组存储和执行在数据库服务器端的程序。存储程序总是在服务器的进程或线程的内存中执行的。

二、为什么使用存储程序?

优点:

  • 执行效率高;
  • 简化开发。

缺点:

  • 占用服务器端资源;
  • 数据迁移时需跟着一并迁移。

三、存储程序分类

存储程序分为3类,分别是:

  • 存储过程:有输入和输出参数,可以执行一组sql语句。
  • 存储函数:有一个返回值,可以执行一组sql语句,可以传递参数。
  • 触发器:执行一组sql语句,由事件驱动自动执行,不能传递参数。

四、存储过程

1.存储过程参数的3中模式

in:输入,默认

out:输出

inout:输入输出

2.流程控制语句

2.1 条件语句

if 条件 then #代码,分号结尾 elseif 条件 then #代码,分号结尾 else #代码,分号结尾 end if;

2.2 循环语句

# while ... do ... end while; while 条件 do #代码,分号结尾 end while; #loop #lip:是给当前loop循环取得别名 别名:loop if 条件 then leave 别名;#结束循环 end if; end loop; #repeat repeat until 条件;#条件满足结束循环 end repeat;

3.示例代码

创建关键词:procedure

调用关键词:call

#存储过程声明及调用 #根据员工的姓名查询职位信息 delimiter //;#设置分隔符,以//作为一句代码的结束标志 #声明存储过程关键词procedure,参数模式默认是in create procedure sel_job(name varchar(20)) begin select job from emp where ename = name; end; call sel_job('scott');#调用存储过程 #根据员工的姓名查询职位信息 delimiter //; #第一个参数模式是in,第二个参数模式是out create procedure sel_job2(name varchar(20), out e_job varchar(20)) begin #关键词into,可将jobde值赋给变量e_job select job into e_job from emp where ename = name; end; call sel_job2('scott', @e_job);#@e_job 定义一个临时变量来接收传出来的值 select @e_job; #根据员工的姓名查询职位信息 delimiter //; #声明存储过程关键词procedure,参数模式默认是in create procedure sel_job3(inout name_job varchar(20)) begin #以变量name_job的值作为检索条件,into将值赋给变量name_job select job into name_job from emp where ename = name_job; end; set @name='scott';#定义name变量并赋值 call sel_job3(@name);#使用变量 select @name; #存储过程语法:if / 循环 #if:成绩分级 80 A /60 B /C create procedure score(sc int) begin declare v_level varchar(20);#变量声明 #set v_level = 'A';#变量赋值 if sc >= 80 then set v_level = 'A'; elseif sc >= 60 then set v_level = 'B'; else set v_level = 'C'; end if; select v_level;#展示变量值 end; call score(89); call score(69); #循环语句:1+2+…+100 delimiter //; create procedure calc() begin declare i int; declare sum int; set i = 1; set sum = 0; while i <= 100 do set sum = sum + i; set i = i + 1; end while; select sum; end; call calc(); delimiter //; create procedure calc2() begin declare i int; declare sum int; set i = 1; set sum = 0; #lip:是给当前loop循环取得别名 lip:loop set sum = sum + i; set i = i + 1; if i > 100 then leave lip; end if; end loop; select sum; end; call calc2(); delimiter //; create procedure calc3() begin declare i int; declare sum int; set i = 1; set sum = 0; repeat set sum = sum + i; set i = i +1; until i > 100; end repeat; select sum; end; call calc3();

五、存储函数

创建关键词:function

调用关键词:作为sql语句的一部分进行调用

示例代码:

#存储函数(根据雇员的编号查询名称) delimiter //; create function func_emp(eno int) returns varchar(20) deterministic #确定的,如果函数多次输入同一个参数值,得到的结果是一致的,表示确定的 begin declare name varchar(20); select ename into name from emp where epmno = eno; return name; end; #调用:作为sql语句的一部分进行调用 select func_emp(7788);

六、触发器

关键关键词:tigger

#触发器 #删除student表记录,将删除记录添加到bak表中。 #创建备份表 create table stu_bak select * from student where 1=0; #定义触发器 delimiter //; create tigger tri_stu #事件包括这些:before|after insert|update|delete after delete on student for each row #行级触发器 begin #封装了值的对象:old | new insert into stu_bak values(old.sid,old.sname,old.cid); end; #开始触发 delete from student where sid=5;

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120204.html

(0)
上一篇 2025-10-31 11:10
下一篇 2025-10-31 11:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信