存储过程和函数

【存储过程】


 一个存储过程就是一个可编程的函数, 它在数据库中保存
 可以由一条或多条SQL语句组成

例子:
 购物中点击了下单
 删除购物车表某条记录
 生成了一条订单记录
 用户余额扣掉
 商家余额加上
 用户积分
 ...

定义一个存储过程

CREATE PROCEDURE proc1()

BEGIN

 

SELECT 1+1;

SELECT NOW();

SELECT LEFT('HAHA',2);

 

END

 

删除存储过程

DROP PROCEDURE proc1;

 

调用存储过程

CALL proc1();

 

用户变量

可以先在用户变量中保存值, 然后再引用它

这样就可以将值从一条语句传递到另一条语句

* 用户变量和连接有关

 

SET @x = 'hello';

SELECT @x;

 

SELECT 'world' INTO @y;

SELECT @y;

 

SET @z = 1+2+3;

SELECT @z;

查询的结果保存到x变量中:

SELECT (@x:=age) FROM student WHERE name = '张三';

SELECT @x;

SELECT * FROM student WHERE age = @x;

 

 

 

创建带参数的存储过程

参数类型

IN - 只能将参数的值传入过程, 在过程中的修改对变量没有影响, 就是个默认值

CREATE PROCEDURE proc2(IN p INT)

BEGIN

SELECT p;

SET p = 2;

SELECT p;

END



DROP PROCEDURE proc2;



SET @p = 1;

CALL proc2(@p);

SELECT @p;

结果:1,2,1

OUT - 参数的值传不进过程中, 但是在过程中对其修改的结果会影响变量的结果

CREATE PROCEDURE proc3(OUT p INT)

BEGIN

SELECT p;

SET p = 2;

SELECT p;

END



SET @p = 1;

CALL proc3(@p);

SELECT @p;

结果:null,2,2

 

INOUT - 既能传入, 对其进行的修改又能传出来

CREATE PROCEDURE proc4(INOUT p INT)

BEGIN

SELECT p;

SET p = 2;

SELECT p;

END



SET @p = 1;

CALL proc4(@p);

SELECT @p;

结果:1,2,2

 

【函数】

CREATE FUNCTION func1() RETURNS INT

BEGIN

RETURN 1;

END

 

函数必须放在查询语句中调用

SELECT func1();

 

已经写好的函数

SELECT NOW();

 

 函数和存储过程的区别
 1. 函数必须有返回值, 存储过程没有
 2. 存储过程的参数可以是IN,OUT,INOUT; 函数的参数是IN类型的

 使用函数和存储过程的好处
 1. 可以实现较快的执行速度
 2. 实现模块化编程
 3. 可以使用控制流语句
 4. 可以作为一种安全机制来使用
 5. 减少网络流量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值