Mysql存储过程详细教程
点关注不迷路,欢迎再访!
精简博客内容,尽量已行业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。
平时工作使用oracle居多,最近学习mqsql语句,基本写法大同小异,今天汇总下。
一、定义
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
二、存储过程的特点
1、能完成较复杂的判断和运算
2、可编程行强,灵活
3、SQL编程的代码可重复使用
4、执行的速度相对快一些
5、减少网络之间的数据传输,节省开销
三、创建一个简单的存储过程
创建存储过程语法
create procedure 名称()
begin
.........
end
创建存储过程
create procedure MyDemo1()
begin
select * from user_info;
end;
调用存储过程
call MyDemo1();
四、存储过程的变量
create procedure MyDemo2()
begin
-- 使用 declare语句声明一个变量
declare username varchar(32) default '';
-- 使用set语句给变量赋值
set username='ex_sunqi';
-- 返回变量
select username;
end;
- 变量的声明使用declare,一句declare只声明一个变量,变量必须先声明后使用;
- 变量具有数据类型和长度,varchar需要指定长度,与mysql的SQL数据类型保持一致;
- 变量可以通过set来赋值,也可以通过select into的方式赋值;
- 变量需要返回,可以使用select语句,如:select 变量名。
- 存储过程中变量是有作用域的,作用范围在begin和end块之间,end结束变量的作用范围即结束。
- 需要多个块之间传值,可以使用全局变量,即放在所有代码块之前
五、存储过程参数
1、基本语法
create procedure 名称([IN|OUT|INOUT] 参数名 参数数据类型 )
begin
.........
end
- 传入参数:类型为in,表示该参数的值必须在调用存储过程事指定,如果不显示指定为in,那么默认就是in类型。
- IN类型参数一般只用于传入,在调用过程中一般不作为修改和返回
- 如果调用存储过程中需要修改和返回值,可以使用OUT类型参数
- INOUT表示既可以输入也可以输出的参数
create procedure MyDemo3(userId int)
begin
declare username varchar(32) default '';
select name into username from users where id=userId;
select username;
end;