存储过程
定义
概念类似于函数, 就是把一段代码封装起来, 当要执行这一段代码的时候, 可以通过调用该存储过程来实现, 在封装的语句体里面, 可以使用 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;