当前位置:嗨网首页>书籍在线阅读

07-变量的使用

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

存储过程和函数中可以使用变量,而且在MySQL 5.1版本中,变量是不区分大小写的。

1.变量的定义

通过DECLARE可以定义一个局部变量,该变量的作用范围只能在BEGIN…END块中,可以用在嵌套的块中。变量的定义必须写在复合语句的开头,并且在任何其他语句的前面。可以一次声明多个相同类型的变量。如果需要,可以使用DEFAULT赋默认值。

定义一个变量的语法如下:

DECLARE var_name[,. .] type [DEFAULT value]

例如,定义一个DATE类型的变量,名称是last_month_start:

DECLARE last_month_start DATE;

2.变量的赋值

变量可以直接赋值,或者通过查询赋值。直接赋值使用SET,可以赋常量或者赋表达式,具体语法如下:

SET var_name = expr [, var_name = expr] . .

给刚才定义的变量last_month_start赋值,具体语法如下:

SET last_month_start = DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH);

也可以通过查询将结果赋给变量,这要求查询返回的结果必须只有一行,具体语法如下:

SELECT col_name[,. .] INTO var_name[,. .] table_expr

通过查询将结果赋值给变量v_payments:

CREATE FUNCTION get_customer_balance(p_customer_id INT,

p_effective_date DATETIME)

RETURNS DECIMAL(5,2)

DETERMINISTIC

READS SQL DATA

BEGIN

DECLARE v_payments DECIMAL(5,2); #SUM OF PAYMENTS MADE PREVIOUSLY

SELECT IFNULL(SUM(payment.amount),0) INTO v_payments

FROM payment

WHERE payment.payment_date <= p_effective_date

AND payment.customer_id = p_customer_id;

RETURN v_rentfees + v_overfees - v_payments;

END $$