mysql存储过程

存储过程定义:一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。

    存储过程通常有以下优点:

   (1)存储过程在服务器端运行,执行速度快。

   (2)存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。

   (3)确保数据库的安全。使用存储过程可以完成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限。

    (4) 存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

这里插入一个关于游标的概念:
作用:用于对查询数据库所返回的记录进行遍历,以便进行相应的操作
声明一个游标:
DECLARE 游标名 CURSOR FOR select语句

开启一个游标:OPEN 游标名
游标打开后,就可以使用FETCH…INTO语句从中读取数据。

FETCH游标名INTO 变量名 ...

关于存储过程的写法:
1.创建存储过程:create procedure 存储过程名(参数列表)
2.调用存储过程:CALL 存储过程名([参数 ... ])
3.存储过程的删除: DROP PROCEDURE [IF EXISTS] 存储过程名
4.存储过程的修改:ALTER PROCEDURE 存储过程名 [特征 ...](特征:CONTAINS SQL,SQL SECURITY。COMMENT ‘string’)

接下来给大家举一个例子:创建一个存储函数来删除xs_kc表中有,但xs表中不存在的学号(最近在学汇编 感觉某种形式上有些类似)

delimiter $$
create function delete_stu(xh char(6))
	returns boolean
begin
	declare stu char(6);
	select 姓名 into stu from xs where 学号=xh;
	if stu is null then
		delete from xs_kc where 学号=xh; 
		return true;
	else 
		return false;
	end if;
end$$
delimiter ;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值