日期: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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论