MySQL存储过程带in和out参数
MySQL存储过程带in和out参数
最简单的例子:
[html]
mysql> DELIMITER $$
mysql> USE test $$
Database changed
mysql> DROP PROCEDURE IF EXISTS `sp_add`$$
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE PROCEDURE sp_add(a INT, b INT,OUT c INT)
-> BEGIN
-> SET c=a+ b;
-> END$$
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
[html]
mysql> CALL sp_add (1,2,@c);
Query OK, 0 rows affected (0.00 sec)</p><p>mysql> SELECT @c;
+------+
| @c |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
一个稍微复杂的例子:
[html]
mysql> show create table t_BillNo;
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t_BillNo | CREATE TABLE `t_billno` (
`SaleNo` bigint(20) DEFAULT NULL,
`bmh` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC | www.sd-ju.com
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from t_BillNo;
+--------+------+
| SaleNo | bmh |
+--------+------+
| 1 | 2 |
| 4 | 3 |
| 4 | 5 |
| 7 | 7 |
| 12 | 8 |
+--------+------+
5 rows in set (0.00 sec)
mysql>
mysql> DELIMITER $$
mysql> USE test $$
Database changed
mysql> DROP PROCEDURE IF EXISTS `sp_GetMaxNumber`$$
Query OK, 0 rows affected (0.01 sec)
DELIMITER $$
USE test $$
DROP PROCEDURE IF EXISTS `sp_GetMaxNumber`$$
CREATE PROCEDURE sp_GetMaxNumber (IN v_bmh VARCHAR(6), OUT v_MaxNo INT)
BEGIN
START TRANSACTION;
UPDATE t_BillNo
SET SaleNo = IFNULL(SaleNo,0)+1
WHERE bmh = v_bmh;
IF @@error_count = 0 THEN
BEGIN
SELECT Saleno INTO v_MaxNo FROM t_BillNo WHERE bmh = v_bmh;
COMMIT;
END;
ELSE
BEGIN
ROLLBACK;
SET v_MaxNo = 0;
END;
END IF;
END$$
DELIMITER ;
mysql> CREATE PROCEDURE sp_GetMaxNumber (IN v_bmh VARCHAR(6), OUT v_MaxNo INT)
-> BEGIN
-> START TRANSACTION;
-> UPDATE t_BillNo
-> SET SaleNo = IFNULL(SaleNo,0)+1
-> WHERE bmh = v_bmh;
-> IF @@error_count = 0 THEN
-> BEGIN
-> SELECT Saleno INTO v_MaxNo FROM t_BillNo WHERE bmh = v_bmh; www.js-yg.com
-> COMMIT;
-> END;
-> ELSE
-> BEGIN
-> ROLLBACK;
-> SET v_MaxNo = 0;
-> END;
-> END IF;
-> END$$
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql>
mysql> call sp_GetMaxNumber(8,@v_MaxNo);
Query OK, 0 rows affected (0.00 sec)
mysql> select @v_MaxNo;
+----------+
| @v_MaxNo |
+----------+
| 12 |
+----------+
1 row in set (0.00 sec)
MySQL存储过程带in和out参数的更多相关文章
- (转)oracle 存储过程 带游标作为OUT参数输出
(转)oracle 存储过程 带游标作为OUT参数输出 存储过程返回OUT参数的游标 例子. 包中带过程 要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 ...
- mysql存储过程或函数中传入参数与表字段名相同引发的悲剧
真实案例.如下的一个存储过程: create procedure Apple(in user_id int) begin delete from users where user_id = user_ ...
- mysql存储过程 带参数 插入 操作
今天再次添补一下小小内容,闲话不多说,直入标题. 先来看下,如何创建带参数的 存储过程(ps:本文只限mysql5及以上版本) CREATE PROCEDURE prSaveFileInfo(Tabl ...
- mybatis 调用mysql存储过程 带输出输入参数
http://lohasle.iteye.com/blog/1669879 存储过程都是一样的,只是根据自己的喜好,可以用MAP或者JAVABEAN传递参数. -- ----------------- ...
- MySQL存储过程--带参数报错1064
DELIMITER $$ USE `student`$$ DROP PROCEDURE IF EXISTS `sync_student`$$ CREATE DEFINER=`student`@`%` ...
- MySQL 存储过程参数用法 in, out, inout
MySQL 存储过程参数有三种类型:in.out.inout.它们各有什么作用和特点呢? 一.MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似 ...
- Mysql存储过程调用
mysql存储过程实例教程 发布时间:2014-04-09编辑:JB01 这篇文章主要介绍了mysql存储过程的使用方法,mysql存储过程实例教程,有需要的朋友参考下. 1.1create p ...
- MySQL存储过程(一)
1.1 CREATE PROCEDURE (创建) CREATE PROCEDURE存储过程名 (参数列表) BEGIN SQL语句代码块 END 注意: 由括号包围的参数列必须总是存在.如果没有参 ...
- MySQL存储过程(转载)
转自:http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html 1.1 CREATE PROCEDURE (创 ...
随机推荐
- C++ Primer 随笔 Chapter 9 顺序容器
参考:http://www.cnblogs.com/kurtwang/archive/2010/08/19/1802912.html 1..顺序容器:vector(快速随机访问):list(快速插入 ...
- Code (组合数)
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7184 Accepted: 3353 Description Trans ...
- NOI题库2454 雷涛的小猫
2454:雷涛的小猫 总时间限制: 20000ms 单个测试点时间限制: 10000ms 内存限制: 65536kB 描述 雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助的小猫(当然,这样 ...
- BFS zoj 1649
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1649 //hnldyhy(303882171) 11:12:46 // z ...
- Thinking in C++: Pointers to members 指向成员的指针
通常来说,一个指针(pointer)是一个存储地址的变量,你能在运行时去改变它,并且指针可以指向数据或函数. 但在C++中,指向成员的指针(pointer-to-member)指向的是class或st ...
- 美丽的表格样式(使用CSS样式表控制表格样式)
按照WEB2.0风格,设计了几个表格样式,希望大家喜欢. WEB2.0提倡使用div开布局,但不是要全然放弃使用表格,表格在数据展现方面还是不错的选择. 如今使用介绍使用CSS样式表来控制.美化表格的 ...
- [Angular 2] Exposing component properties to the template
Showing you how you can expose properties on your Controller to access them using #refs inside of yo ...
- Android 高仿微信实时聊天 基于百度云推送
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38799363 ,本文出自:[张鸿洋的博客] 一直在仿微信界面,今天终于有幸利用百 ...
- 常用 cmd 命令
msconfig-------系统配置实用程序 mspaint--------画图板 devmgmt.msc--- 设备管理器 diskmgmt.msc---磁盘管理实用程序 services.msc ...
- Python之路,Day14 - It's time for Django
Python之路,Day14 - It's time for Django 本节内容 Django流程介绍 Django url Django view Django models Django ...