存储过程和函数

2018-09-22  本文已影响0人  小灰灰_5c75

存储过程

类似Java中的“方法”
好处:
1、 代码复用
2、 简化操作

存储过程:一组预先编译的SQL语句的集合,理解成批处理语句
减少编译过程,减少连接数据库次数,提高效率

一、 创建
Create procedure 存储过程名(参数列表)
Begin
存储存储体/方法体(SQL语句)
End
注意:
1、参数列表
参数模式 参数名 参数类型
例如: In stuname varchar(20)

参数模式:
In:参数可作为输入,调用方需要传入值
Out:参数可作为输出,参数可作为返回值
Inout:参数可做输入输出,该参数需要传入值,又可以返回值

2、begin end
如果存储过程只有一句话,begin end 可以不写
存储过程每条SQL语句结尾都要加分号
存储过程结尾使用delimiter重新设置:delimiter 结束标记
例如:delimiter $

二、 调用
Call 存储过程名(实参列表);

1、 空参列表
例如:
创建:
Delimiter 设置为结束标记
Create procedure mycc()
Begin
Sql语句
End $

调用:
Call mycc()$

2、 in模式过程存储过程
create procedure mycd(IN username varchar(20),IN userage int,…)
begin
declare result int dafault 0; 声明并初始化
sql语句(IN中的username是局部变量可直接用于where筛选条件)

select if (result>0,’成功’,’失败’); 使用变量
end $

调用:(字符集错误更换字符集即可(set names gbk 等))
Call mycc(‘lgh’) $

3、 out模式存储过程
创建:
create procedure myce(IN username varcher(10),OUT name varchar(20))
begin
select 表.name into name
sql语句
end $

调用:
Set @nameCall myce(‘lgh’,@name)
Select @name $

4、 inout模式存储过程
创建:
create procedure mycf(INOUT a int,INOUT b int)
begin
set a= a2;
set b=b
2;
end $

调用:
Set @a=10 Set @b=11
Call mycf(@a,@b) Select @a,@b

三、 删除存储过程
Drop procedure 单个存储过程名;

四、 查看存储过程名
Show create procedure 存储过程名;

函数
区别:
存储过程可有若干返回,适合批量插入和更新
函数有且仅一个返回,适合做数据处理

一、创建语法
Create function 函数名(参数列表) returns 返回类型
Begin
函数体(最后要有return 语句)
End
参数列表可为空

例如:
Create function myf1(num1 float,num2 float) returns float
Begin
declear

仅有一句话时可省略begin and
使用delimiter语句设置结束标记

二、调用语法
Select 函数名(参数列表)

三、查看函数
Show create function 函数名;

四、删除
Drop function 函数名;

上一篇下一篇

猜你喜欢

热点阅读