重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、局部变量
创新互联专业为企业提供大兴安岭网站建设、大兴安岭做网站、大兴安岭网站设计、大兴安岭网站制作等企业网站建设、网页设计与制作、大兴安岭企业网站模板建站服务,10年大兴安岭做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。
局部变量一般用declare来声明,可以使用default来说明默认值。
二、用户变量
用户变量的作用域要比局部变量要广。用户变量可以作用于当前整个连接,但是当当前连接断开后,其所定义的用户变量都会消失。
用户变量使用如下(这里我们无须使用declare关键字进行定义,可以直接这样使用):
select @变量名
对用户变量赋值有两种方式,一种是直接用"="号,另一种是用":="号。其区别在于使用set命令对用户变量进行赋值时,两种方式都可以使用;当使用select语句对用户变量进行赋值时,只能使用":="方式,因为在select语句中,"="号被看作是比较操作符。
变量总体分为两大类:procedure内部和非procedure内部;
procedure内用declare 声明,作用域仅限于声明的procedure。
另一类就是通常意义上的变量,分为全局(global)和局部(session),用select 或者 set声明,作用域分别是全局和回话级别。
下面是一个简单的 存储过程的例子.
DECLARE v_index INT;
定义一个 名称为 v_index 的变量, 类型为 INT
MYSQL 变量定义应该只能在 存储过程, 函数里面定义.
不像 Oracle / SQL Server , 一个 BEGIN / END 里面就可以定义/执行了。
mysql DELIMITER //
mysql CREATE PROCEDURE TestWhile()
- BEGIN
- DECLARE v_index INT;
-
- SET v_index = 0;
-
- WHILE v_index 5 DO
- SET v_index = v_index + 1;
- SELECT v_index;
- END WHILE;
-
- END//
Query OK, 0 rows affected (0.00 sec)