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 ;

优点

缺点

相关推荐
Kapaseker16 分钟前
破坏性更新 - 解读 Jetpack Compose 1.12
android·kotlin
雨白38 分钟前
我的 UML 学习笔记:结合 Android 实例看懂 4 种常用图表
android·架构
怣疯knight1 小时前
快速判断apk有没有支持16kb页面标准
android
风流 少年2 小时前
Spring AI 2.0:Advisor
android·人工智能·spring
布莱克6052 小时前
理解 MySQL 架构:从连接层到存储引擎
mysql
AC赳赳老秦3 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
谢慧琼3 小时前
2026零基础做企业网站,低成本搭建官方网站
服务器·前端·javascript
YM52e3 小时前
分页查询的基石:ArkTS 为鸿蒙商品列表设计 LIMIT/OFFSET 的表
android·学习·华为·harmonyos
weixin_431600444 小时前
前端数据埋点(1):一次点击如何变成一条埋点
前端·js·数据埋点
IT_陈寒4 小时前
Python线程池吞了异常还不告诉我,这谁顶得住啊
前端·人工智能·后端