`
wander312
  • 浏览: 213479 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Mysql存储过程(带输入输出参数的测试)--变量,参数,注释

阅读更多

Mysql存储过程--变量,参数,注释
2009-01-13 13:40

变量定义:

 

DECLARE variable_name [,variable_name...] datatype [DEFAULT value];

其中,datatype为mysql的数据类型,如:INT, FLOAT, DATE, VARCHAR(length)

例:

DECLARE l_int INT unsigned default 4000000;

DECLARE l_numeric NUMERIC(8,2) DEFAULT 9.95;

DECLARE l_date DATE DEFAULT '1999-12-31';

DECLARE l_datetime DATETIME DEFAULT '1999-12-31 23:59:59';

DECLARE l_varchar VARCHAR(255) DEFAULT 'This will not be padded';

变量赋值

SET 变量名 = 表达式值 [,variable_name = expression ...]

参数

mysql存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT

 

Create procedure|function([[IN |OUT |INOUT ] 参数名 数据类形...])

IN 输入参数

表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

OUT 输出参数

该值可在存储过程内部被改变,并可返回

INOUT 输入输出参数

调用时指定,并且可被改变和返回

IN参数例子:

创建

mysql> CREATE PROCEDURE sp_demo_in_parameter(IN p_in INT)

mysql> BEGIN SELECT p_in; /*查询输入参数*/

mysql> SET p_in=2; /*修改*/

mysq> select p_in; /*查看修改后的值*/

mysql> END;


执行结果:
mysql> set @p_in=1;
mysql> call sp_demo_in_parameter(@p_in);
+------+
| p_in |
+------+
|    1 | 
+------+

+------+
| p_in |
+------+
|    2 | 
+------+

mysql> select @p_in;

+-------+
| @p_in |
+-------+
| 1     |
+-------+

以上可以看出,p_in虽然在存储过程中被修改,但并不影响@p_id的值

OUT参数例子

创建:

mysql> CREATE PROCEDURE sp_demo_out_parameter(OUT p_out INT)

mysql> BEGIN SELECT p_out;/*查看输出参数*/

mysql> SET p_out=2;/*修改参数值*/

mysql> SELECT p_out;/*看看有否变化*/

mysql> END; 
执行结果:
mysql> SET @p_out=1;
mysql> CALL sp_demo_out_parameter(@p_out);
+-------+
| p_out | 
+-------+
| NULL | 
+-------+
/*未被定义,返回NULL*/
+-------+
| p_out |
+-------+
|     2 | 
+-------+

mysql> SELECT @p_out;
+-------+
| p_out |
+-------+
|     2 | 
+----------+

INOUT参数例子:

mysql> CREATE PROCEDURE sp_demo_inout_parameter(INOUT p_inout INT)

mysql> BEGIN SELECT p_inout;

mysql> SET p_inout=2;

mysql> SELECT p_inout; END; 

执行结果:
set @p_inout=1
call sp_demo_inout_parameter(@p_inout) //
+---------+
| p_inout |
+---------+
|       1 |
+---------+

+---------+
| p_inout | 
+---------+
|       2 |
+---------+


select @p_inout;

+----------+
| @p_inout | 
+----------+
| 2        |
+----------+

用户变量

1、 在mysql客户端使用用户变量

mysql> SELECT 'Hello World' into @x;
mysql> SELECT @x;
+-------------+
| @x          |
+-------------+
| Hello World |
+-------------+
mysql> SET @y='Goodbye Cruel World';

mysql> select @y;
+---------------------+
| @y                  |
+---------------------+
| Goodbye Cruel World |
+---------------------+

mysql> SET @z=1+2+3;
mysql> select @z;
+------+
| @z   |
+------+
| 6    |
+------+

2、 在存储过程中使用用户变量

mysql> CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World');
mysql> SET @greeting='Hello';

mysql> CALL GreetWorld( );
+----------------------------+
| CONCAT(@greeting,' World') |
+----------------------------+
| Hello World                |
+----------------------------+

3、 在存储过程间传递全局范围的用户变量

mysql> CREATE PROCEDURE p1( )   SET @last_procedure='p1';

mysql> CREATE PROCEDURE p2( ) SELECT CONCAT('Last procedure was ',@last_procedure);

mysql> CALL p1( );

mysql> CALL p2( );
+-----------------------------------------------+
| CONCAT('Last procedure was ',@last_procedure) |
+-----------------------------------------------+
| Last procedure was p1                         |
+-----------------------------------------------+

注意:

①用户变量名一般以@开头

②滥用用户变量会导致程序难以理解及管理

注释

mysql存储过程可使用两种风格的注释

双模杠:--

该风格一般用于单行注释

c风格:/* 注释内容 */ 一般用于多行注释

分享到:
评论
1 楼 MichaelIJava 2013-01-11  
非常好,简洁,全,

相关推荐

    MySQL5.1参考手册官方简体中文版

    MySQL 5.1参考手册 这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。 This translation was done by MySQL ...

    MySQL 5.1参考手册

    MySQL 5.1参考手册.chm 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL...

    MySQL 5.1参考手册中文版

    2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6...

    MYSQL中文手册

    2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL ...

    mysql5.1中文手册

    测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL...

    mysql官方中文参考手册

    MySQL 5.1参考手册 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. ...

    mysql数据库my.cnf配置文件

    # innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,根据你的 CPU 核数来更改,默认是4 # 注:这两个参数不支持动态改变,需要把该参数加入到my.cnf里,修改完后重启MySQL服务,允许值的范围从 1-64 innodb_...

    PHP和MySQL Web开发第4版pdf以及源码

    1.13.1 测试和设置变量类型 1.13.2 测试变量状态 1.13.3 变量的重解释 1.14 根据条件进行决策 1.14.1 if语句 1.14.2 代码块 1.14.3 else语句 1.14.4 elseif语句 1.14.5 switch语句 1.14.6 比较不同的条件 ...

    PHP和MySQL WEB开发(第4版)

    1.13.1 测试和设置变量类型 1.13.2 测试变量状态 1.13.3 变量的重解释 1.14 根据条件进行决策 1.14.1 if语句 1.14.2 代码块 1.14.3 else语句 1.14.4 elseif语句 1.14.5 switch语句 1.14.6 比较不同的条件 1.15 通过...

    PHP和MySQL Web开发第4版

    1.13.1 测试和设置变量类型 1.13.2 测试变量状态 1.13.3 变量的重解释 1.14 根据条件进行决策 1.14.1 if语句 1.14.2 代码块 1.14.3 else语句 1.14.4 elseif语句 1.14.5 switch语句 1.14.6 比较不同的条件 ...

    cmd操作命令和linux命令大全收集

    date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间 set 指定环境变量名称=要指派给变量的字符 设置环境变量 set 显示当前所有的环境变量...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除环境变量中的PATHT CLASSPATH中包含Oracle的值。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...

    java初学者必看

    2.2 环境变量的配置与测试 2.2.1 设置环境变量path 2.2.2 设置环境变量classpath 2.2.3 环境变量的测试 2.3 API文档的下载与使用 2.4 第一个应用程序 2.4.1 HelloWorld程序 2.4.2 程序运行编译命令 2.4.3 ...

    php网络开发完全手册

    16.3.3 存储过程的参数 265 16.3.4 复合语句 267 16.3.5 变量 268 16.3.6 条件语句 269 16.3.7 循环语句 271 16.3.8 游标 273 16.3.9 存储过程的删除 275 16.4 触发器的设计 275 16.4.1 触发器的创建与触发 275 ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: echo "Hello World!"; ?> First PHP page // Single line C++ style comment /* printing the message */ ...

    Python Cookbook

    6.18 用_ _init_ _参数自动初始化实例变量 266 6.19 调用超类的_ _init_ _方法 267 6.20 精确和安全地使用协作的超类调用 270 第7章 持久化和数据库 273 引言 273 7.1 使用marshal模块序列化数据 275 7.2 ...

    教学、学习必备:jsp教案

    2.3.7JavaScript窗口及输入输出 72 2.3.8Web应用经典案例研究 86 第3章 JSP标记 89 3.1 指令标记PAGE 89 3.2 指令标记INCLUDE 92 3.3 动作标记INCLUDE 93 3.4 动作标记PARAM 94 3.5 动作标记FORWARD 96 3.6 动作标记...

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 ...11.8.2 使用ImageIO输入/输出位图 427 11.9 剪贴板 432 11.9.1 数据传递的类...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    chapter10 输入输出 299 10.1 inputstream与outputstream 300 10.1.1 串流设计的概念 300 10.1.2 串流继承架构 303 10.1.3 串流处理装饰器 306 10.2 字符处理类 311 10.2.1 reader与writer继承架构 311 ...

Global site tag (gtag.js) - Google Analytics