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 ;

优点

缺点

相关推荐
子非衣1 小时前
MySQL修改JSON格式数据示例
android·mysql·json
钊兵2 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动
祈澈菇凉3 小时前
Webpack的基本功能有哪些
前端·javascript·vue.js
小纯洁w3 小时前
Webpack 的 require.context 和 Vite 的 import.meta.glob 的详细介绍和使用
前端·webpack·node.js
想睡好4 小时前
css文本属性
前端·css
qianmoQ4 小时前
第三章:组件开发实战 - 第五节 - Tailwind CSS 响应式导航栏实现
前端·css
zhoupenghui1684 小时前
golang时间相关函数总结
服务器·前端·golang·time
隔壁老王1564 小时前
mysql实时同步到es
数据库·mysql·elasticsearch
White graces4 小时前
正则表达式效验邮箱格式, 手机号格式, 密码长度
前端·spring boot·spring·正则表达式·java-ee·maven·intellij-idea