当前位置:七道奇文章资讯数据防范MySQL防范
日期:2011-05-02 15:44:00  来源:本站整理

MySQL5新语句declare的用法[MySQL防范]

赞助商链接



  本文“MySQL5新语句declare的用法[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
新SQL语句,在复合语句中声明变量的指令是DECLARE.
(1) Example with two DECLARE statements
两个DECLARE语句的例子
CREATE PROCEDURE p8 ()
BEGIN
DECLARE a INT;
DECLARE b INT;
SET a = 5;
SET b = 5;
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1 >= b;
END; // /* I won't CALL this */
在历程中定义的变量并非真正的定义,你只是在BEGIN/END块内定义了罢了(译注:也就是形参).注意这些变量和会话变量不一样,不能利用修饰符@你必须清楚的在BEGIN/END块中声明变量和它们的范例.变量一旦声明,你就可以在任何能利用会话变量、文字、列名的地方利用.
(2)Example with no DEFAULT clause and SET statement

没有默许子句和设定语句的例子
CREATE PROCEDURE p9 ()
BEGIN
DECLARE a INT /* there is no DEFAULT clause */;
DECLARE b INT /* there is no DEFAULT clause */;
SET a = 5; /* there is a SET statement */
SET b = 5; /* there is a SET statement */
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1 >= b;
END; // /* I won't CALL this */
有很多初始化变量的办法.假如没有默许的子句,那么变量的初始值为NULL.你可以在任什么时刻候利用SET语句给变量赋值.
(3)Example with DEFAULT clause
含有DEFAULT子句的例子
CREATE PROCEDURE p10 ()
BEGIN
DECLARE a, b INT DEFAULT 5;
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1 >= b;
END; //
我们在这里做了一些改变,但是后果还是一样的.在这里利用了DEFAULT子句来设定初始值,这就不需求把DECLARE和SET语句的实现脱离了. 
  (4)Example of CALL
    调用的例子
MySQL> CALL p10() //
+--------+
| s1 * a |
+--------+
| 25 |
| 25 |
+--------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
后果显示了历程能正常工作
(5) Scope
作用域
CREATE PROCEDURE p11 ()
BEGIN
DECLARE x1 CHAR(5) DEFAULT 'outer';
BEGIN
DECLARE x1 CHAR(5) DEFAULT 'inner';
SELECT x1;
END;
SELECT x1;
END; //
目前我们来谈论一下作用域的问题.例子中有嵌套的BEGIN/END块,当然这是合理的.同时包含两个变量,名字都是x1,这样也是合理的.内部的变量在其作用域内享有更高的优先权.当履行到END语句时,内部变量消逝,此时已经在其作用域外,变量不再可见了,因此在存储历程外再也不能找到这个声明了的变量,但是你可以通过OUT参数大概将其值指派 给会话变量来保存其值. 
 
调用作用域例子的历程:

mysql> CALL p11()//
+-------+
| x1 |
+-------+
| inner |
+-------+
+-------+
| x1 |
+-------+
| outer |
+-------+
我们看到的后果时第一个SELECT语句检索到最内层的变量,第二个检索到第二层的变量.
  以上是“MySQL5新语句declare的用法[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .