实例一:无参的存储过程 复制代码 代码如下: $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!"); mysql_select_db('test',$conn); $sql = " create procedure myproce() begin INSERT INTO user (id, username, sex) VALUES (NUL

MySQL支持IN(传递给存储过程)、OUT(从存储过程传出)、INOUT(对存储过程传入和传出) 所有MySQL变量必须以@开始!   最简单的例子:[html]

mysql> DELIMITER $$ //用delimiter命令来把语句定界符从 ;变为//。这样就允许在程序体用;定界符传递到服务器,而不是被mysql自己来解释。

mysql> USE test $$

Databasechanged

mysql>DROPPROCEDUREIF EXISTS `sp_add`$$

Query OK, 0 rowsaffected (0.00 sec)

mysql>CREATEPROCEDUREsp_add(a INT, b INT,OUTcINT)

->BEGIN

->SETc=a+ b;

->END$$

Query OK, 0 rowsaffected (0.00 sec)

mysql> DELIMITER ;

mysql> CALL sp_add (1,2,@c);

Query OK, 0 rowsaffected (0.00 sec)

mysql> SELECT@c;

+------+

| @c |

+------+

| 3 |

+------+

1 row inset(0.00 sec)

一个稍微复杂的例子:

mysql> show createtablet_BillNo;

+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

|Table |CreateTable |

+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| t_BillNo | CREATETABLE`t_billno` (

`SaleNo`bigint(20)DEFAULTNULL,

`bmh`varchar(20)DEFAULTNULL

) ENGINE=InnoDB DEFAULTCHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC|

+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row inset(0.00 sec)

mysql>select*fromt_BillNo;

+--------+------+

| SaleNo | bmh |

+--------+------+

| 1 | 2 |

| 4 | 3 |

| 4 | 5 |

| 7 | 7 |

| 12 | 8 |

+--------+------+

5rowsinset (0.00 sec)

mysql>

mysql> DELIMITER $$

mysql> USE test $$

Databasechanged

mysql>DROPPROCEDUREIF EXISTS `sp_GetMaxNumber`$$

Query OK, 0 rowsaffected (0.01 sec)

DELIMITER $$

USE test $$

DROPPROCEDUREIF EXISTS `sp_GetMaxNumber`$$

CREATEPROCEDUREsp_GetMaxNumber (INv_bmhVARCHAR(6),OUTv_MaxNoINT)

BEGIN

STARTTRANSACTION;

UPDATEt_BillNo

SETSaleNo = IFNULL(SaleNo,0)+1

WHEREbmh = v_bmh;

IF @@error_count = 0 THEN

BEGIN

SELECTSalenoINTOv_MaxNoFROMt_BillNoWHEREbmh = v_bmh;

COMMIT;

END;

ELSE

BEGIN

ROLLBACK;

SETv_MaxNo = 0;

END;

ENDIF;

END$$

DELIMITER ;

mysql>CREATEPROCEDUREsp_GetMaxNumber (INv_bmhVARCHAR(6),OUTv_MaxNoINT)

->BEGIN

-> START TRANSACTION;

->UPDATEt_BillNo

->SETSaleNo = IFNULL(SaleNo,0)+1

->WHEREbmh = v_bmh;

-> IF @@error_count = 0 THEN

->BEGIN

-> SELECTSalenoINTOv_MaxNoFROMt_BillNoWHEREbmh = v_bmh;

->COMMIT;

->END;

->ELSE

->BEGIN

-> ROLLBACK;

-> SETv_MaxNo = 0;

->END;

->ENDIF;

->END$$

Query OK, 0 rowsaffected (0.00 sec)

mysql> DELIMITER ;

mysql>

mysql> call sp_GetMaxNumber(8,@v_MaxNo);

Query OK, 0 rowsaffected (0.00 sec)

mysql>select@v_MaxNo;

+----------+

| @v_MaxNo |

+----------+

| 12 |

+----------+

1 row inset(0.00 sec)

?

c mysql存储过程 out_MySQL存储过程带in和out参数相关推荐

  1. C#调用存储过程详解(带返回值、参数输入输出等)

    C#调用存储过程详解(带返回值.参数输入输出等) 这篇文章主要介绍了C#调用存储过程的方法,结合实例形式详细分析了各种常用的存储过程调用方法,包括带返回值.参数输入输出等,需要的朋友可以参考下 本文实 ...

  2. c oracle存储过程返回值,C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法.分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @stu ...

  3. mysql out_mysql存储过程 in out inout

    存储过程的好处 存储过程是一组预编译好的sql语句,用来执行某个特定的功能.这样可以省去sql解析.编译.优化的过程,提高了执行效率,同时,在调用的时候只传一个存储过程的名称,而不用传一大堆sql语句 ...

  4. 什么场景使用mysql的存储过程_mysql存储过程的使用

    直入正题吧:首先创建一张 students 表 create tablestudents( idint primary keyauto_increment, ageint, namevarchar(2 ...

  5. mysql触发器和存储过程_MySql的存储过程和触发器

    Mysql的存储过程是类似于其它编程语言中的函数的功能,存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数. 创建存储过程(procedure)时,因为其内部有以; ...

  6. mysql数据库的存储过程不用学吗,MySql数据库之存储过程学习_MySQL

    之前在工作中总是听别人提到存储过程,觉得是个很高深的东西,利用工作之余,看了下相关的知识,现将学习知识总结如下,希望可以为刚学习的人提供些许帮助. 开发环境:Navicat For Mysql. My ...

  7. MySQL学习——操作存储过程

    MySQL学习--操作存储过程 摘要:本文主要学习了使用DDL语句操作存储过程的方法. 了解存储过程 是什么 存储过程是一组为了完成特定功能的SQL语句集合. 使用存储过程的目的是将常用或复杂的工作预 ...

  8. MySQL初级篇——存储过程、存储函数的相关概念及应用举例

    文章目录: 1.什么是存储过程? 2.存储过程操作相关SQL 3.存储过程实操SQL 4.存储函数操作相关SQL 5.存储函数实操SQL 6.存储过程.存储函数的优缺点 1.什么是存储过程? 含义:存 ...

  9. MySql 自定义函数,存储过程,游标的使用

    首先整理一下mysql内置的一些函数 MySQL内置函数 一.字符函数 (1)CONCAT()//字符连接 (2)CONCAT_WS()//使用指定的分隔符进行字符连接 (3)FORMAT()//数字 ...

最新文章

  1. 2.1 mac下多版本jdk的安装和管理
  2. java什么时候用list_Java快问快答:用 ArrayList 还是 LinkedList?
  3. 如何预防服务器宕机:防患于未然
  4. js 闭包的用法详解
  5. 最优化课堂笔记06-无约束多维非线性规划方法(续)
  6. python入口函数的作用_python之函数中参数的作用域
  7. VBA IsNull 应用 - 捕获错误并查找未填充的值
  8. Javascript 创建书签小工具 (bilibili视频下载为例)
  9. TRAC 整合已有的SVN目录
  10. Java 使用BigDecimal类处理高精度计算
  11. WebForm控件多字段绑定
  12. [2018.09.08 T1] 炉石
  13. 科学家做一个实验,我就得胖三斤?
  14. 电脑文件夹如何有效分类?
  15. 解决windows 10在联网时依旧无法安装3DMAX2014
  16. Python中的盆地跳跃(Basin Hopping)优化
  17. SAP ABAP BDC录屏 数据导入和检验-实例
  18. int... num什么意思?
  19. 关闭和开启笔记本自带键盘。
  20. java 判断当前月天数

热门文章

  1. 从月薪8K的分析师到月薪2W,只因我有了这份工具清单!
  2. 继续完善掼蛋游戏 其次说说朋友的情况
  3. 今天的春天到了的p2psearcher
  4. 飞鸽传书程序IT基础架构和应用的管理
  5. 2008-09-01 XEIM 1.0 beta 已发布
  6. 总结一些C/C++的知识点
  7. 醒醒吧!送给那些盲目自学的人
  8. 优化算法笔记|萤火虫算法理解及实现
  9. 关于python django.url问题 求助
  10. 用Python一次性把论文作图与数据处理全部搞定!