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 ;

优点

缺点

相关推荐
工程师老罗14 小时前
如何在Android工程中配置NDK版本
android
崔庆才丨静觅14 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606115 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了15 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅15 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
ccecw15 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH307315 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
崔庆才丨静觅15 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅16 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment16 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端