1.存储过程
1.1 概念
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
1.2 优缺点
封装复杂性,并可以接受参数和返回结果
存储过程可移植性差,依赖编程语言
2.创建和调用
2.1 创建
#声明存储过程
CREATE PROCEDURE demo_proce(p_in int)
# 返回子句
RETURNING
#存储过程语句块
BEGIN .... END
#变量定义与赋值
-- 变量定义
define p1 int;
-- 赋值
let p1 = 0;
-- 或者
select tabid into p1 from systables where tabid = 1;
#例如
create table stu(id int(10),name varchar(25));
insert into stu values(1,"zs");
#存储过程
CREATE PROCEDURE get_name(id int(10)) RETURNING varchar(25);
DEFINE name varchar(25);
SELECT name into name
FROM stu
WHERE id = id;
RETURN name;
END PROCEDURE;
2.2 调用
> call get_name(1);
(expression) zs
3.存储过程参数
存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:
CREATE PROCEDURE 存储过程名([[{IN} |OUT |INOUT ] 参数名 数据类形…])
- IN 输入参数:无关键字表示IN, 表示调用者向过程传入值(传入值可以是字面量或变量)
- OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
- INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
3.1 in
create procedure in_test(p_in int) returning varchar(25)