MySQL 存储过程

复制代码
create procedure  存储过程名 (in | out | INPUT  参数名 参数类型,。。。)
【characteristics 。。。】
 begin
 		存储过程体
 end

存储过程的参数类型

IN 、OUT、INPUT 都可以在一个存储过程带多个

  1. 没有参数(无参数无返回)
  2. 仅仅带IN 类型(有参数无返回)
  3. 仅仅带out 类型(无参数有返回)
  4. 既带IN 又带OUT(有参数有返回)
  5. 带INPUT (有参数有返回) 跟SQL server 中 存储过程中的 output 一样

存储过程的参数说明

一、参数前面的符号意思

  1. IN:当前参数为输入参数,也就是表示入参;
    存储过程中只是读取这个参数的值。如果没有定义参数种类,默认就是 IN,表示输入参数。
  2. OUT:当前参数为输出参数,也就是表示出参;
    执行完成后,调用这个存储过程的客户端或者应用程序就可以读取这个参数返回的值了
  3. INOUT:当前参数既可以为输入参数,也可以作为输出参数 同 SQL Server 中 存储过程的 output
    二、存储过程中 参数的数据类型 可以是mysql 数据库中的任意类型

三、characteristics 表示创建存储过程时指定对存储过程的约束条件,其取值信息如下:

创建 存储过程

复制代码
DELIMITER  $  --  自定义  分节符
create procedure  pro_emps_select()
begin
	select *  from  emps;
end $

delimiter;

存储过程调用

sql server

exec 存储过程 参数 --支持参数命名

mysql

call 存储过程(实参列表)

创建存储过程 不带参数

复制代码
delimiter $
create procedure   pro_student_select()  --  括号不能省略
begin
    select  *  from   student;
end $
delimiter ;

call  pro_student_select()

创建存储过程 IN参数

复制代码
delimiter $
create procedure   pro_student_select(IN stu char(8))  --  括号不能省略
begin
    select  *  from   student
    where stu_num=stu;
end $
delimiter ;

set @stu='s002';
call  pro_student_select(@stu)

创建存储过程 out参数

复制代码
delimiter $
create procedure   pro_student_select(out stu_name char(10))  --  括号不能省略
begin
    select  student_name into stu_name     --  如果多个 输出参数,   into   xxx,xxxx    用逗号隔开就行了
    from   student
    where stu_num='1002';
end $
delimiter ;


call  pro_student_select(@stuname)
select @stuname;

创建存储过程 in、 out参数

复制代码
delimiter $
create procedure   pro_student_select(in stu_id char(6),out stu_name char(10))  --  括号不能省略
begin
    select  student_name into stu_name   from   student
    where stu_num=stu_id ;
end $
delimiter ;

set @stuid=1002;
call  pro_student_select(@stuid,@name)
select @name;

创建存储过程 inout参数

复制代码
delimiter $
create procedure   pro_student_select(inout stu_name char(10))  --  括号不能省略
begin
    select  student_class  into stu_name   from   student
    where stu_name =stu_name ;
end $
delimiter ;

set @stu_name =1002;
call  pro_student_select(@stu_name )
select @stu_name ;

优点

缺点

相关推荐
树上有只程序猿16 小时前
终于有人把数据库讲明白了
前端
猩兵哥哥16 小时前
前端面向对象设计原则运用 - 策略模式
前端·javascript·vue.js
司宸16 小时前
Prompt设计实战指南:三大模板与进阶技巧
前端
RoyLin16 小时前
TypeScript设计模式:抽象工厂模式
前端·后端·typescript
华仔啊16 小时前
Vue3+CSS 实现的 3D 卡片动画,让你的网页瞬间高大上
前端·css
江城开朗的豌豆16 小时前
解密React虚拟DOM:我的高效渲染秘诀 🚀
前端·javascript·react.js
vivo互联网技术16 小时前
拥抱新一代 Web 3D 引擎,Three.js 项目快速升级 Galacean 指南
前端·three.js
江城开朗的豌豆16 小时前
React应用优化指南:让我的项目性能“起飞”✨
前端·javascript·react.js
会飞的青蛙16 小时前
GIT 配置别名&脚本自动化执行
前端·git