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 ;

优点

缺点

相关推荐
oMcLin5 分钟前
如何在 CentOS 7 上通过配置 MySQL Cluster 部署高可用的跨境电商数据库,确保数据同步与高并发处理
mysql·centos
摘星编程6 分钟前
Flutter for OpenHarmony 实战:SliverList 滑动列表详解
android·javascript·flutter
陈_杨6 分钟前
前端成功转鸿蒙开发者真实案例,教大家如何开发鸿蒙APP-- 卡片编辑功能
前端·harmonyos
abbiz7 分钟前
30 个 Android 面试高频问题及答案
android·面试·职场和发展
Tancenter7 分钟前
Mysql和ElasticsSearch
数据库·mysql·elasticsearch
十年磨一剑~11 分钟前
springboot+vue+mysql手搓一个管理系统
vue.js·spring boot·mysql
Swift社区11 分钟前
Flutter 的异步问题,为什么和前端 Promise 问题高度相似?
前端·flutter
程序员Agions12 分钟前
AI 编程的"效率幻觉":为什么用了 Cursor 之后,你反而更累了?
前端·ai编程
fai厅的秃头姐!13 分钟前
2026-1-13
数据库·mysql
Android技术之家14 分钟前
在手机上跑大模型?Google AI Edge Gallery 开源项目深度解析
前端·人工智能·edge·开源