博客
关于我
MySQL 存储过程参数:in、out、inout
阅读量:792 次
发布时间:2023-02-10

本文共 1648 字,大约阅读时间需要 5 分钟。

MySQL 存储过程参数的使用说明

MySQL 存储过程支持三种类型的参数:in、out 和 inout。这些参数类型在传递数据时有不同的行为,理解这些行为对于有效调用存储过程至关重要。本文将详细解释这三种参数类型的特点及其使用方法。

一、in 参数

in 参数类似于 C 语言中的函数参数。在调用存储过程时,调用者可以传递值给存储过程。然而,存储过程在执行过程中可能会修改这些参数的值,但对调用者来说,这些修改是不可见的。例如:

create procedure pr_param_in(in id int);

当调用存储过程时,传递一个整数值:

call pr_param_in(10);

存储过程内部可以修改 id 的值,但调用者无法直接访问修改后的值。

示例
create procedure pr_param_in(in id int)begin    if id is not null then        set id = id + 1;    end if;    select id as id_inner;end;

调用时:

call pr_param_in(10);

执行结果会显示 id_inner 为 11,但 id_out 仍为 10(假设存储过程未修改外部变量)。

二、out 参数

out 参数用于从存储过程返回值给调用者。存储过程执行后,out 参数的值会被传回调用者。初始值为 null,即使调用者未传递值也为 null。

create procedure pr_param_out(out id int);

调用时:

call pr_param_out();

或:

set @id = 10;call pr_param_out();

示例存储过程:

create procedure pr_param_out(out id int)begin    select null as id_inner_1;    if id is not null then        set id = id + 1;    end if;    select id as id_out;end;

调用时:

call pr_param_out();

结果中 id_out 为 1,而 id_inner_1 为 null。

三、inout 参数

inout 参数结合了 in 和 out 的特点。调用者可以通过 inout 参数传递值给存储过程,并且存储过程可以返回修改后的值给调用者。inout 参数的行为类似于 C 语言中的引用传值。

create procedure pr_param_inout(inout id int);

调用时:

call pr_param_inout(10);

示例存储过程:

create procedure pr_param_inout(inout id int)begin    if id is not null then        set id = id + 1;    end if;    select id as id_inner_2;    if id is null then        set id = 1;    end if;    select id as id_inner_3;end;

调用时:

call pr_param_inout(10);

结果中 id_inner_3 为 11,而 id_out 也是 11。

参数默认值

存储过程的参数可以设置默认值,减少调用时的参数传递量。例如:

create or replace procedure procdefault(    p1 varchar2,    p2 varchar2 default 'mark')

此时,调用时只需传递 p1 的值,p2 会使用默认值。

通过以上说明,可以看到不同参数类型的行为差异,并根据需求选择合适的参数类型。

转载地址:http://tkbfk.baihongyu.com/

你可能感兴趣的文章
mysql er进制包安装_MySQL二进制包安装简略过程
查看>>
MVC jsp+servlet+javabean 连接Mysql数据库測试demo
查看>>
mysql explain关键字执行计划表解析系列一
查看>>
Mvc Session 设置以后再构造函数中取值时为null问题
查看>>
mysql explain字段含义
查看>>
MVC 区域功能
查看>>
mysql explain执行计划详解
查看>>
MySQL Explain详解
查看>>
mvc 添加控制器时运行所选代码生成器出错,未能加载文件或者程序集或他的一个依赖项
查看>>
MySQL FEDERATED 提示
查看>>
MVC 视图-模型,动态更新
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL GTID主备不一致修复方案
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
mysql if then
查看>>
MySQL IFNULL() 函数使用注意点----干货
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
MySQL InnoDB 三大文件日志,看完秒懂
查看>>