day06 MySQL数据库存储过程和函数
一、存储过程和函数的概述:
数据库的存储过程和存储函数是指在数据库中定义的一些sql语句的集合,直接调用这些存储过程的名字或存储函数的名字就可以直接使用这些sql。可以避免开发人员大量的写一些sql语句操作数据,可以减少客户端和服务器端的数据传输。所以,学好存储过程和存储函数也是很重要的哦!
二、存储过程【procedure】
1、创建存储过程create procedure 自定义一个存储名()
begin
select 语句
end;
call 存储名(); 调用存储过程
2、删除存储过程drop procedure 存储名;
3、带参数的存储过程
3.1:in参数,即输入参数create procedure 存储名(in 列名 数据类型)
begin
select 语句
end;
call 存储名(列名的值);
3.2:out参数,即输出参数create procedure 存储名(out 列名 数据类型)
begin
select * into 列名 from 表名;
end;
call 存储名(@列名);
3.3:inout参数,即输入输出参数create procedure 存储名(inout 列名 数据类型)
begin
select * into 列名 from 表名;
end;
set @列名=某个值 //定义一个变量并赋值
call 存储名(@列名);
4、定义变量
4.1:定义局部变量declare a int //定义
set a=10; //赋值
select a; //输出
4.2:定义全局变量“@作为起始符”set @b=20; //定义会话变量
select @b; //输出
三、存储函数【function】
1、创建存储函数定义的实例。create function 函数名(a int , b int) returns int
begin
declare c int;
set c=a+b;
return c;
end;
select 函数名(a的数值,b的数值) //调用存储函数
四、光标的运用
在MySQL查询数据库肿,存储过程和存储函数中使用光标可以实现逐条的读取结果集中的记录。主要包括以下几个步骤:
1、声明光标:declare 光标名 cursor select_name
译;select_name:是一个select语句,返回一行或多行数据。
实例:declare info_student cursor for select
sid,name,age
from student
where sid=1;
2、打开光标open 光标名称
3、使用光标fetch 光标名称 into 列名;
4、关闭光标close 光标名称
五、查看存储过程和函数
1、使用show status 语句查看show { procedure | function } status [like 'pattern']
译:
procedure:表示查询存储过程
function:表示查询存储函数
like 'pattern':用来匹配存储过程或函数名称。
2、使用show create语句查看show create { procedure | function } sp_name;
译;
procedure:表示查询存储过程
function:表示查询存储函数
sp_name:表示存储过程或函数名称
3、修改存储过程和存储函数alter { procedure | function } sp_name
{ contains sql | no sql | reads sql data | modifies sql data }
| sql security { definer | invoker }
| comment 'string'
译:
procedure | function:表示是存储过程还是存储函数
sp_name :表示名称
contains sql:表示子程序包含sql语句,但是不包含读写数据的语句
no sql:表示子程序包含sql语句
reads sql data:表示子程序中包含读数据的语句
modifies sql data :表示子程序中包含写数据的语句
definer | invoker:表示指明权限执行,前者是定义者自己能够执行,
后者是调用者可以执行
comment 'string':注释信息
4、删除存储过程和存储函数drop { procedure | function } sp_name
六、结束语:
学到这里,存储过程和存储函数就已经学完了哦!好好消化一下吧!