【发布时间】:2014-02-08 10:59:55
【问题描述】:
我正在尝试在用户定义的函数中动态构建变量名,但它似乎不起作用。有没有办法做到这一点或使用数组变量?
我有一个由 7 个字符组成的字符串,它代表一周中的日子(1234567 或 1_3_5_7 等)。我想评估一周中选择一天的频率(从 0 到 7)。我认为,使用循环遍历所有 7 个位置是最简单的,但我收到一条错误消息,提示
[Err] 1193 - 未知系统变量 'CONCAT'
关于我如何实现这一点的任何提示?这是我的代码:
DELIMITER $$
DROP FUNCTION IF EXISTS fn_freq$$
CREATE FUNCTION fn_freq(days INT) RETURNS INT
BEGIN
DECLARE D1 VARCHAR(1);
DECLARE D2 VARCHAR(1);
DECLARE D3 VARCHAR(1);
DECLARE D4 VARCHAR(1);
DECLARE D5 VARCHAR(1);
DECLARE D6 VARCHAR(1);
DECLARE D7 VARCHAR(1);
DECLARE x INT;
DECLARE fn_freq INT;
SET x =1;
SET fn_freq = 0;
WHILE x < 8 DO
SET CONCAT('D',x) = MID(days, x, 1);
IF CONCAT('D',x) = '_' THEN
ELSE
SET fn_freq = fn_freq + 1;
SET x = x + 1;
END IF;
SET x = x + 1;
END WHILE;
RETURN fn_freq;
END$$
DELIMITER ;
【问题讨论】: