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参数的更多相关文章

  1. (转)oracle 存储过程 带游标作为OUT参数输出

    (转)oracle 存储过程 带游标作为OUT参数输出 存储过程返回OUT参数的游标 例子. 包中带过程 要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 ...

  2. mysql存储过程或函数中传入参数与表字段名相同引发的悲剧

    真实案例.如下的一个存储过程: create procedure Apple(in user_id int) begin delete from users where user_id = user_ ...

  3. mysql存储过程 带参数 插入 操作

    今天再次添补一下小小内容,闲话不多说,直入标题. 先来看下,如何创建带参数的 存储过程(ps:本文只限mysql5及以上版本) CREATE PROCEDURE prSaveFileInfo(Tabl ...

  4. mybatis 调用mysql存储过程 带输出输入参数

    http://lohasle.iteye.com/blog/1669879 存储过程都是一样的,只是根据自己的喜好,可以用MAP或者JAVABEAN传递参数. -- ----------------- ...

  5. MySQL存储过程--带参数报错1064

    DELIMITER $$ USE `student`$$ DROP PROCEDURE IF EXISTS `sync_student`$$ CREATE DEFINER=`student`@`%` ...

  6. MySQL 存储过程参数用法 in, out, inout

    MySQL 存储过程参数有三种类型:in.out.inout.它们各有什么作用和特点呢? 一.MySQL 存储过程参数(in) MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似 ...

  7. Mysql存储过程调用

    mysql存储过程实例教程 发布时间:2014-04-09编辑:JB01 这篇文章主要介绍了mysql存储过程的使用方法,mysql存储过程实例教程,有需要的朋友参考下.   1.1create  p ...

  8. MySQL存储过程(一)

    1.1 CREATE  PROCEDURE (创建) CREATE PROCEDURE存储过程名 (参数列表) BEGIN SQL语句代码块 END 注意: 由括号包围的参数列必须总是存在.如果没有参 ...

  9. MySQL存储过程(转载)

    转自:http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html 1.1         CREATE  PROCEDURE  (创 ...

随机推荐

  1. C++中强制变换之const_cast

    今天学习了一下C++中的强制转换,看了const_cast,我发现了这个转换关键字的奇怪之处,于是把它记录一下,废话不说,先看一个程序: #include <iostream> using ...

  2. poj1980

    首先想到费用流,但m<=100000还是算了吧那就感觉要用dp了,首先将a,b排序贪心一下可知,a,b的配对肯定不可能出现交叉这样就可以dp了,复杂度O(nm)还是过不去在贪心一下会发现,对于a ...

  3. COJ 0047 20702最大乘积

    20702最大乘积 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 输入n个元素组成的序列s,你需要找出一个乘积最大的连续子序列 ...

  4. Delhpi TdxComponentPrinter怎样联上dxdbgrid中的数据打印

    有谁知道TdxComponentPrinter怎样联上dxdbgrid中的数据打印?         有谁知道TdxComponentPrinter怎样联上dxdbgrid中的数据打印?   回复人: ...

  5. Android *.db-journal

    config.xml <!-- The default journal mode to use use when Write-Ahead Logging is not active. Choic ...

  6. 《A First Course in Probability》-chaper4-离散型随机变量-负二项分布

    基于我们最为熟悉的离散型分布——二项分布,我们能够衍生出很多别的分布列,对于之前介绍过的几何分布,我们赋予其的含义是:某个事件成功的概率是p,在n次独立重复实验中恰好成功一次的概率是多少.顺着这层含义 ...

  7. #345 div2 D. Image Preview

    Vasya's telephone contains n photos. Photo number 1 is currently opened on the phone. It is allowed ...

  8. sql server 常用小知识点

    1. sql server的语法:中文要加 N select * from eVA_EMPBoard where name = N'施纪平' 而oracle的不用 2.

  9. STM8S 独立看门狗配置及使用

    //独立看门口的时钟来源 内部低速时钟 128khz 除以2 即64khz //选择 IWDG_Prescaler_128 //64/128 =0.5 khz 2ms周期 #define IWDG_5 ...

  10. python 学习笔记 基础

    python对象三要素: identity(值):对应于内存的地址,不可修改type(类型):不可修改value(值): mutable :可以修改 immutable:不可以修改 引用计数当引用计数 ...