在MySQL语言的存储过程中,变量有会话变量、存储过程变量两种。两种变量的声明方式不同,作用场景也不尽相同,在实际使用中要根据需要加以选择。
1.变量种类
1)会话变量
会话变量也称用户变量,可以在一个客户端会话的任何地方声明,作用域是整个会话,会话断开后,会话变量也就消失。会话变量名以@开头,使用set直接赋值,在一个会话内,会话变量只需初始化一次。
例如,
表示声明了一个名字叫“@num”的会话变量,其初始值为1。
2)存储过程变量
存储过程变量以DECLARE为关键字声明的变量,只能在存储过程中使用,其命名不需要以@开头。以DECLARE声明的变量都会被初始化为NULL,存储过程变量存在于数据库服务器上。
例如,
表示声明了一个名字叫“mynum”的存储过程变量,其初始值为0。
2.变量定义
存储过程变量定义格式:
其中,(1)DECLARE为声明存储过程变量的关键字;
(2)变量名可以任意,但尽可能达到能表意的目的;
(3)数据类型为MySQL的数据类型,如int, float, date, varchar(length);
(4)[DEFAULT VALUE] 为变量的初始值,可有可无,若不指定,则自动赋NULL值。(www.xing528.com)
下面为存储过程变量声明的例子。
声明一个名字为my_int,数据类型为int,默认值为4 000 000的变量:
声明一个名字为my_ numeric,数据类型为number,默认值为9.95的变量:
声明一个名字为my_ date,数据类型为date,默认值为“1999-12-31”的变量:
声明一个名字为my_ datetime,数据类型为datetime,默认值为“1999-12-31 23:59:59”的变量:
声明一个名字为my_ varchar,数据类型为varchar,默认值为“This will not be padded”的变量:
3.变量存取值
1)变量赋值
变量赋值采用关键字SET开头,后面跟变量名,赋值符号用等号“=”表示,等号的右边为所需要赋予的值。其值可以是具体值,也可以是表达式,还可以是查询返回值。
赋值格式:
存储过程变量赋值例子:
2)变量取值
存储过程变量的取值与其他面向对象的编程语言一样,直接调用变量名就可以取得变量上存储的值。
下面的例子定义了一个名字为“course_score”的存储过程变量,然后给其赋值80,最后把此变量中的值插入“course”表。
下面为一个存储过程的案例,案例以变量“mystr”为例,展示了如何定义变量,给变量赋值,以及使用变量的完整过程。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。