MySQL程序语法错误,如何为concated变量赋值?

时间:2016-02-29 14:55:35

标签: mysql variables procedure

DECLARE LENGTH INT(20) DEFAULT 0;
DECLARE DIM_0 VARCHAR(255);
DECLARE DIM_1 VARCHAR(255);
DECLARE DIM_2 VARCHAR(255);
DECLARE DIM_3 VARCHAR(255);
DECLARE DIM_4 VARCHAR(255);

SET LENGTH = F_DIM_ITEM_NUM(DIM_I);
DECLARE i int(20) DEFAULT 0;
WHILE i < LENGTH
DO 
    SET concat('DIM_',i) = F_DIM_ITEM_GET(DIM_I, i + 1);
    SET i = i + 1;
END WHILE;

似乎函数F_DIM_ITEM_GET的返回没有分配给var DIM_i, 或者还有其他错误。我怎样才能使它工作?任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

<a target="_blank" href="http://your_url_here.html">Link</a> 不是变量,而是字符串文字(常量),您无法为其赋值。您可以尝试使用dynamic sql through prepared statements创建要使用字符串连接动态执行的sql语句,然后执行它。

动态创建sql(显然,首先声明DSQL变量),执行它并释放它:

concat('DIM_',i)

您还需要在使用之前声明DSQL = 'SET ' + concat('DIM_',i) + '= F_DIM_ITEM_GET(DIM_I, i + 1)'; PREPARE stmt FROM DSQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; 变量。