- 浏览: 2015198 次
- 来自: 武汉
文章分类
- 全部博客 (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 1480创建所有数据库 调用 ... -
mysql中的zerofill的应用
2014-06-24 09:10 1258整型字段有个ZEROFILL属性,在数字长度不够的数据前面 ... -
MySQL查询不区分大小写问题
2013-09-17 15:27 1464问题描述: 找出用户 ... -
MySQL大数据量分页查询方法及其优化
2013-07-16 13:39 1594分页的2种写法 SELECT keyword FRO ... -
MySQL定时器Events
2013-01-30 10:54 1540以下功能主要供学习 ... -
MYSQL FEDERATED存储引擎
2012-04-23 19:25 1798FEDERATED是其中一个专门针对远程数据库的实现。一般 ... -
MYSQL InnoDB表锁
2012-04-19 19:55 7428InnoDB锁问题InnoDB与MyISA ... -
MYSQL MyISAM表锁
2012-04-18 23:12 10375锁是计算机协调多个进程或线程并发访问某一资源的机制 。在数 ... -
MyISAM InnoDB 区别
2012-02-14 11:50 1458主要区别: 1).MyISAM ... -
MySQL索引
2012-01-13 09:58 13921、索引是什么 索引 ... -
MySQL binlog日志
2011-11-08 16:23 1701binlog日志记录对数据发生或潜在发生更改的SQL语句, ... -
mysql 复制表数据,表结构的方法
2011-11-08 15:33 1322什么时候我们会用到复制表?例如:我现在对一张表进行操作,但 ... -
mysql分区
2011-09-29 12:15 1528一,什么是数据库分区 前段时间写过一篇关于mysql分表的 ... -
mysql分表,分区的区别和联系
2011-09-29 12:09 1673一,什么是mysql分表, ... -
MySQL数据库下.frm .MYD .MYI损坏恢复操作
2011-06-23 10:56 2729将数据库内容物理文件直接导入到mysql\data下,每只表各 ... -
Linux下快速重置MySQL用户(root)密码方法
2011-05-24 11:03 2239skip-grant-tables顾名思义,数据库启动的时候 ... -
海量数据的删除策略
2011-03-28 10:54 16421.延迟删除一条数据会 ... -
使用CASE WHEN进行字符串替换处理
2011-03-01 16:21 3515/* mysql> select * from sa ... -
数据库字段设计经验谈
2011-01-30 14:14 1621数据库的设计必须符 ... -
mysql 自定义函数
2011-01-25 10:46 5946功能主要供学习。高并发场景不要使用mysql特性(触发器, ...
相关推荐
在MySQL 入门教程中,我们能够看到很多关于如何创建储存过程 和如何利用 IN 和 OUT 参数调用存储过程的示例。这些示例都很简单,能够很好的帮助你理解 MySQL 中创建带参数存储过程的语法。这些示例已在 MySQL 5.5 中...
MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢
MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢? 一、MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数...
要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的结构: mysql> desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | Type |...
数据数据库编程 创建存储过程1 课程目标 1)了解 ——存储过程的优点; 2)理解 —— 存储过程的概念; 3)掌握 —— 存储过程的创建方法; 存储过程优点 使用存储过程的优点有: (1)存储过程在服务器端...[ IN | OUT
存储过程的优点 1、执行一次后,会将生成的二进制代码驻留缓冲区(便于下次执行),提高执行效率 2、SQL语句加上控制语句的集合,灵活性高 3、在服务器端存储,客户端调用时,降低网络负载 4、可多次重复被调用,可...
VB6通过ADO连MySql数据库,调用带参数的存储过程。
oracle ,mysql ,db2,等多数据库 存储过程 out 和java 匹配的字段
创建另外一个存储过程sell_update,在其中调用第一个存储过程,如果给定参数为0,则修改由第一个存储过程插入记录的是否发货字段为'已发货',如果给定参数为1则删除第一个存储过程插入的记录,并将操作结果输出。...
Mysql存储过程 1.创建存储过程语法(格式) DELIMITER $ CREATE PROCEDURE 存储过程名A(IN 传入参数名a INT,IN 传入参数名b VARCHAR(20),OUT 返回参数名c INT) BEGIN 内容.......... END $ 解析: IN 代表...
整篇文章为个人学习心得,之后会持续发表mysql高级进阶,javaweb框架等知识点文章,制作不易,...create procedure mypro(in a int,out b int) begin select '这是一个存储过程'; set b=1; end; -- 调用存储过程 cal
存储过程可以有多个in,out,inout参数,而函数只有输入参数类型,而且不能带in. 存储过程实现的功能要复杂一些;而函数的单一功能性(针对性)更强。 存储过程可以返回多个值;存储函数只能有一个返回值。 存储...
drop PROCEDURE if exists my_procedure; create PROCEDURE my_procedure(in my_id int,out my_name... 您可能感兴趣的文章:Mysql存储过程循环内嵌套使用游标示例代码MySQL 存储过程中执行动态SQL语句的方法Mysql存储过
由括号包围的参数列必须总是存在 如果没有参数 也该使用一个空参数列 每个参数默认都是一个IN参数 要指定为其它参数 可在参数名之前使用关键词 OUT或INOUT 在mysql客户端定义存储过程的时候使用delimiter命令来把...
存储过程和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以使用IN、OUT、INOUT类型,而函数的参数只能是IN类型的。如果有函数从其他类型的数据库迁移到MySQL,那么可能因此需要将函数改造成...
文章目录一、存储过程1.1、语法:1.2、示例1.2.1、无参数的存储过程1.2.3、只有一个 in 参数的存储过程1.2.3、包含 in 参数和 out 参数的存储过程1.2.4、包含 inout 参数的存储过程1.2.5、附:根据 时间 修改 状态:...
如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,一个php变量,也可以不必,只是没有php变量时,没有办法进行动态输入,一个Mysql变量. b。如果存储过程有OUT变量,声明一个Mysql变量,mysql...
用mysql的存储过程查询表中的数据 mysql数据库 tb_users表 use test; DROP TABLE IF EXISTS tb_users; CREATE TABLE IF NOT EXISTS tb_users ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, password ...
5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys) 5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交/回卷...