码迷,mamicode.com
首页 > 数据库 > 详细

新sql语句--变量

时间:2015-08-31 23:36:13      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

1. 在复合语句中声明变量的指令是DECLARE:

1 CREATE PROCEDURE p8 ()
2 BEGIN
3     DECLARE a INT;
4     DECLARE b INT;
5     SET a = 5;
6     SET b = 5;
7     INSERT INTO t VALUES (a);
8     SELECT s1 * a FROM t WHERE s1 >= b;  
9 END; // 

  在过程中定义的变量并不是真正的定义,只是在BEGIN/END块内定义而已(类似形参数).注意与会话变量的区别,不能使用@.变量一旦声明,就可以在任何能使用会话变量,文字,列表的地方使用变量

2. 无初始化子句及SET初始化:

1 CREATE PROCEDURE p9 ()
2 BEGIN
3     DECLARE a INT /* there is no DEFAULT clause */;
4     DECLARE b INT /* there is no DEFAULT clause */;
5     SET a = 5;    /* there is a SET statement */    
6     SET b = 5;    /* there is a SET statement */    
7     INSERT INTO t VALUES (a);     
8     SELECT s1 * a FROM t WHERE s1 >= b;  
9 END; // 

  有很多变量的方法,如果没有设置默认值,则变量为NULL,可以在任何时候使用SET语句给变量赋值.

3. 含有DEFAULT子句的例子:

  可以用DEFAULT子句在声明的同时指定初始值

1 CREATE PROCEDURE p10 ()
2 BEGIN
3     DECLARE a, b INT DEFAULT 5; 
4     INSERT INTO t VALUES (a);
5     SELECT s1 * a FROM t WHERE s1 >= b;
6 END; // 

4. Scope 作用域

1 CREATE PROCEDURE p11 ()
2 BEGIN
3     DECLARE x1 CHAR(5) DEFAULT outer;
4     BEGIN
5         DECLARE x1 CHAR(5) DEFAULT inner;
6         SELECT x1;
7     END;
8     SELECT x1;
9 END; //

  关于作用域,上例中有嵌套的BEGIN/END块,内外两个块都有一个名为x1.内部的变量在其作用域内享有更高的优先权.执行到内部END,内部变量消失.因此,在过程外也不能使用这个声明了的变量.

新sql语句--变量

标签:

原文地址:http://www.cnblogs.com/free-coder/p/4774336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!