- 浏览: 2032907 次
- 来自: 武汉
文章分类
- 全部博客 (415)
- UI设计 (19)
- PHP (26)
- PHP工具类 (23)
- 二次开发 (53)
- phpMVC (28)
- javascript (50)
- JS 组件 (20)
- MYSQL (37)
- 其他 (16)
- xml/flash/flex (6)
- 版本控制 (7)
- 开源 (4)
- bug解决 (5)
- Linux (15)
- NoSQL (14)
- 软件设计 (21)
- C/PHP内核 (5)
- 安全性 (8)
- 面试 (18)
- 设计模式 (4)
- 重构 (6)
- 开发配置 (11)
- SQL SERVER (12)
- 采集 (3)
- SEO (2)
- 维护 (15)
- UML (5)
- 硬件标准 (1)
- 架构 (8)
- JAVA (1)
最新评论
-
carry0987:
求大神分離下X3的模板...不然對於PHP7不友好啊...
分离自Discuz模板类和语法 -
青木得海角:
你好,里面的 Crypt/TripleDES.php 和 Cr ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
q59200182:
能不能给个完整的demo 新手上路不会 求带
AngularJs 指令directive之controller,link,compile
一、MySQL 存储过程参数(in)
MySQL 存储过程 "in" 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。
drop procedure if exists pr_param_in; create procedure pr_param_in( in id int -- in 类型的 MySQL 存储过程参数 ) begin if (id is not null) then set id = id + 1; end if; select id as id_inner; end;
set @id = 10; call pr_param_in(@id); select @id as id_out; mysql> call pr_param_in(@id); +----------+ | id_inner | +----------+ | 11 | +----------+ mysql> select @id as id_out; +--------+ | id_out | +--------+ | 10 | +--------+
可以看到:用户变量 @id 传入值为 10,执行存储过程后,在过程内部值为:11(id_inner),但外部变量值依旧为:10(id_out)。
二、MySQL 存储过程参数(out)
MySQL 存储过程 "out" 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。
drop procedure if exists pr_param_out; create procedure pr_param_out( out id int ) begin select id as id_inner_1; -- id 初始值为 null if (id is not null) then set id = id + 1; select id as id_inner_2; else select 1 into id; end if; select id as id_inner_3; end;
set @id = 10; call pr_param_out(@id); select @id as id_out; mysql> set @id = 10; mysql> mysql> call pr_param_out(@id); +------------+ | id_inner_1 | +------------+ | NULL | +------------+ +------------+ | id_inner_3 | +------------+ | 1 | +------------+ mysql> select @id as id_out; +--------+ | id_out | +--------+ | 1 | +--------+
可以看出,虽然我们设置了用户定义变量 @id 为 10,传递 @id 给存储过程后,在存储过程内部,id 的初始值总是 null(id_inner_1)。最后 id 值(id_out = 1)传回给调用者。
三、MySQL 存储过程参数(inout)
MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。
drop procedure if exists pr_param_inout; create procedure pr_param_inout( inout id int ) begin select id as id_inner_1; -- id 值为调用者传进来的值 if (id is not null) then set id = id + 1; select id as id_inner_2; else select 1 into id; end if; select id as id_inner_3; end;
set @id = 10; call pr_param_inout(@id); select @id as id_out; mysql> set @id = 10; mysql> mysql> call pr_param_inout(@id); +------------+ | id_inner_1 | +------------+ | 10 | +------------+ +------------+ | id_inner_2 | +------------+ | 11 | +------------+ +------------+ | id_inner_3 | +------------+ | 11 | +------------+ mysql> mysql> select @id as id_out; +--------+ | id_out | +--------+ | 11 | +--------+
从结果可以看出:我们把 @id(10),传给存储过程后,存储过程最后又把计算结果值 11(id_inner_3)传回给调用者。 MySQL 存储过程 inout 参数的行为跟 C 语言函数中的引用传值类似。
通过以上例子:如果仅仅想把数据传给 MySQL 存储过程,那就使用"in" 类型参数;如果仅仅从 MySQL 存储过程返回值,那就使用"out" 类型参数;如果需要把数据传给 MySQL 存储过程,还要经过一些计算后再传回给我们,此时,要使用"inout" 类型参数。
参数的默认值,存储过程的参数可以设置默认值
create or replace procedure procdefault(p1 varchar2,p2 varchar2 default 'mark')
发表评论
-
存储过程 循环创建多张表 和 多个数据库
2017-05-25 11:00 1516创建所有数据库 调用 ... -
mysql中的zerofill的应用
2014-06-24 09:10 1321整型字段有个ZEROFILL属性,在数字长度不够的数据前面 ... -
MySQL查询不区分大小写问题
2013-09-17 15:27 1503问题描述: 找出用户 ... -
MySQL大数据量分页查询方法及其优化
2013-07-16 13:39 1637分页的2种写法 SELECT keyword FRO ... -
MySQL定时器Events
2013-01-30 10:54 1575以下功能主要供学习 ... -
MYSQL FEDERATED存储引擎
2012-04-23 19:25 1859FEDERATED是其中一个专门针对远程数据库的实现。一般 ... -
MYSQL InnoDB表锁
2012-04-19 19:55 7528InnoDB锁问题InnoDB与MyISA ... -
MYSQL MyISAM表锁
2012-04-18 23:12 10435锁是计算机协调多个进程或线程并发访问某一资源的机制 。在数 ... -
MyISAM InnoDB 区别
2012-02-14 11:50 1491主要区别: 1).MyISAM ... -
MySQL索引
2012-01-13 09:58 14331、索引是什么 索引 ... -
MySQL binlog日志
2011-11-08 16:23 1738binlog日志记录对数据发生或潜在发生更改的SQL语句, ... -
mysql 复制表数据,表结构的方法
2011-11-08 15:33 1364什么时候我们会用到复制表?例如:我现在对一张表进行操作,但 ... -
mysql分区
2011-09-29 12:15 1568一,什么是数据库分区 前段时间写过一篇关于mysql分表的 ... -
mysql分表,分区的区别和联系
2011-09-29 12:09 1712一,什么是mysql分表, ... -
MySQL数据库下.frm .MYD .MYI损坏恢复操作
2011-06-23 10:56 2801将数据库内容物理文件直接导入到mysql\data下,每只表各 ... -
Linux下快速重置MySQL用户(root)密码方法
2011-05-24 11:03 2290skip-grant-tables顾名思义,数据库启动的时候 ... -
海量数据的删除策略
2011-03-28 10:54 16891.延迟删除一条数据会 ... -
使用CASE WHEN进行字符串替换处理
2011-03-01 16:21 3572/* mysql> select * from sa ... -
数据库字段设计经验谈
2011-01-30 14:14 1666数据库的设计必须符 ... -
mysql 自定义函数
2011-01-25 10:46 6008功能主要供学习。高并发场景不要使用mysql特性(触发器, ...
相关推荐
在MySQL中,存储过程的参数有三种类型:in、out、inout,它们分别对应不同的数据传递方式。 1. **in参数**: `in`参数类似于C语言中的值传递,它将外部变量的值传递到存储过程内部。在存储过程中,`in`类型的参数...
在MySQL 入门教程中,我们能够看到很多关于如何创建储存过程 和如何利用 IN 和 OUT 参数调用存储过程的示例。这些示例都很简单,能够很好的帮助你理解 MySQL 中创建带参数存储过程的语法。这些示例已在 MySQL 5.5 中...
MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢? 一、MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...
4. **设置IN参数**:如果存储过程有`IN`参数,使用`setXXX()`方法(这里的`XXX`根据参数类型选择,如`setString()`, `setInt()`等)设置参数值。这些参数通常是输入数据,对存储过程进行操作。 5. **设置OUT参数**...
MySQL存储过程支持三种类型的参数:IN、OUT 和 INOUT。 1. **IN 参数** - 定义:表示输入参数,即调用存储过程时必须传递给它的值。 - 特性:在存储过程中修改IN参数的值不会被返回到调用程序。 - 示例: ```...
要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构: mysql> desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | Type |...
MySQL 存储过程是 MySQL 数据库中的一个重要功能,自 MySQL 5.0 起开始支持存储过程,存储过程是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储...
inout 表示定义的参数可传入存储过程,并可以被存储过程修改后传出存储过程,存储过程默认为传入参数,所以参数 in 可以省略。第二部分为参数名。第三部分为参数的类型,该类型为 MySQL 数据库中所有可用的字段类型...
- **参数类型:**MySQL存储过程支持`IN`(输入)、`OUT`(输出)、`INOUT`(输入输出)三种参数类型,允许灵活地传递与返回数据。 **参数详解:** - `IN`:输入参数,用于接收外部传入的数据,其值在存储过程中不...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...
MySQL存储过程是数据库管理系统中的一个重要特性,它允许程序员或数据库管理员预先定义一组SQL语句,形成一个可重用的逻辑单元。在这个“MySQL存储过程入门到精通”资料中,你将深入理解存储过程的原理、创建、调用...
### 玩转MySQL存储过程 #### 一、存储过程简介及优势 存储过程是一种预编译的SQL语句集合,存储在数据库中,通过指定名称及其参数来调用执行。这种特性使得存储过程能够在执行时更加高效地完成特定任务。 **主要...
### MySQL存储过程:数据库编程的高级艺术 #### 引言:存储过程的魔力 存储过程作为数据库领域中的一种高级特性,在提升数据处理效率及增强安全性方面扮演着至关重要的角色。MySQL作为广受青睐的关系型数据库管理...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预定义一组SQL语句,并将其封装成一个可重复使用的单元。这个教程将深入讲解如何在MySQL中创建、调用和管理存储过程,以及它们在实际应用中的价值。 ...
CREATE PROCEDURE 过程名 (IN/OUT/INOUT 参数名 数据类型, ...) BEGIN SQL语句; END ``` 2. **编写SQL语句**:在BEGIN和END之间,你可以编写任意数量的SQL语句,包括SELECT、INSERT、UPDATE、DELETE等操作。 3. *...
MySQL 存储过程的参数用在存储过程的定义,共有三种参数类型:IN, OUT, INOUT。 IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值。 OUT 输出参数:该值可...