MySQL学习随记---存储过程

存储过程

定义

概念类似于函数, 就是把一段代码封装起来, 当要执行这一段代码的时候, 可以通过调用该存储过程来实现, 在封装的语句体里面, 可以使用 if/case, case, while 等控制结构. 可以进行sql编程.
查看现有的存储过程: show procedure status

存储过程的优点



创建存储过程

create procedure 存储过程名(参数, 参数, ...)
begin
        //代码
end

存储过程的参数分为输入参数(in), 输出参数(out), 输入输出参数(inout), 默认是输入参数
如果存储过程中就一条语句, begin和end是可以省略的

说明:
(1) 存储过程中, 可以有各种编程元素: 变量, 流程控制, 函数调用;
(2) 还可以有: 增删改查等各种MySQL语句;
(3) 其中select (或 show, 或desc) 会作为存储过程执行后的"结果集"返回;
(4) 形参可以设定数据的"进出方向"


案例1: 查询一个表里面某些字段的语句

CREATE PROCEDURE p()
BEGIN
	SELECT id,username,`password` FROM pcuser;
END;


案例2: 第二个存储过程体会参数

输入一个字符串, 如果等于h, 则取出id >10 的用户,如果是其他的值, 则取出id<10的用户

CREATE PROCEDURE p1(str CHAR(1))
BEGIN
IF str='h' THEN
	SELECT id,username,`password` FROM pcuser WHERE id>10;
ELSE
	SELECT id,username,`password` FROM pcuser WHERE id<=10;
END IF;
END;

调用存储过程

语法: call 存储过程名称()

删除存储过程

drop procedure [if exists] 存储过程名

创建复杂存储过程

包含循环 判断 带输出参数

案例 带输出参数的存储过程
IN 输入参数 OUT 输出参数
CREATE PROCEDURE p2 (IN n INT, OUT res INT)
BEGIN
	SET res = n * n;
END;
CALL p2(100,@res);
SELECT @res;

INOUT代表输入输出变量 在调用时, 使用变量来接收或输出
CREATE PROCEDURE p3 (INOUT res INT)
BEGIN
	SET res = res * res;
END;
SET @res = 100;
CALL p3 (@res);
SELECT @res;



declare声明局部变量

在编程环境中使用

用户变量只要在前面加一个@符号即可
set @name='李白';
select @name;

系统变量

MySQL 启动的时候就存在的变量,
SELECT @@version;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值