变量在一个逻辑里的作用是非常小可的!


变量定义

形式:



DECLARE variable_name [,variable_name...] datatype [DEFAULT value];


其中,datatype为MySQL的数据类型,如:int, float, date, varchar(length)

例如:

DECLARE l_int int unsigned DEFAULT 4000000;
DECLARE l_numeric number(8,2) DEFAULT 9.95;
DECLARE l_date date DEFAULT '1999-12-31';
DECLARE l_datetime datetime DEFAULT '1999-12-31 23:59:59';
DECLARE l_varchar varchar(255) DEFAULT 'This will not be padded';



Ⅱ. 变量赋值
 SET 变量名 = 表达式值 [,variable_name = expression ...]

Ⅲ. 用户变量

ⅰ. 在MySQL客户端使用用户变量

mysql > SELECT 'Hello World' into @x;  
 mysql > SELECT @x;  
 +-------------+  
 | @x |  
 +-------------+  
 | Hello World |  
 +-------------+  
 mysql > SET @y='Goodbye Cruel World';  
 mysql > SELECT @y;  
 +---------------------+  
 | @y |  
 +---------------------+  
 | Goodbye Cruel World |  
 +---------------------+  

 mysql > SET @z=1+2+3;  
 mysql > SELECT @z;  
 +------+  
 | @z |  
 +------+  
 | 6 |  
 +------+  
 ⅱ. 在存储过程中使用用户变量
 mysql > CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World');  
 mysql > SET @greeting='Hello';  
 mysql > CALL GreetWorld( );  
 +----------------------------+  
 | CONCAT(@greeting,' World') |  
 +----------------------------+  
 | Hello World |  
 +----------------------------+  

 ⅲ. 在存储过程间传递全局范围的用户变量
 mysql> CREATE PROCEDURE p1() SET @last_procedure='p1';  
 mysql> CREATE PROCEDURE p2() SELECT CONCAT('Last procedure was ',@last_proc);  
 mysql> CALL p1( );  
 mysql> CALL p2( );  
 +-----------------------------------------------+  
 | CONCAT('Last procedure was ',@last_proc |  
 +-----------------------------------------------+  
 | Last procedure was p1 |  
 +-----------------------------------------------+




注意:
①用户变量名一般以@开头
②滥用用户变量会导致程序难以理解及管理