局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。
局部变量一般用declare来声明,可以使用default来说明默认值。
二、用户变量
用户变量的作用域要比局部变量要广。用户变量可以作用于当前整个连接,但是当当前连接断开后,其所定义的用户变量都会消失。
用户变量使用如下(这里我们无须使用declare关键字进行定义,可以直接这样使用):
select @变量名
对用户变量赋值有两种方式,一种是直接用"="号,另一种是用":="号。其区别在于使用set命令对用户变量进行赋值时,两种方式都可以使用;当使用select语句对用户变量进行赋值时,只能使用":="方式,因为在select语句中,"="号被看作是比较 *** 作符。
下面是一个简单的 存储过程的例子.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)
mysql中 = 一般是做比较的, 而 := 才是赋值, 在不引起歧义的情况下 = 和 := 是通用的
mysql中这两种方式都能在select被赋值, 区别也就下面的一点区别
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)