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,
或还有其他错误。我该如何运作?任何意见,将不胜感激!

最佳答案

concat('DIM_',i)不是变量,而是字符串文字(常量),您不能为其分配值。您可以尝试使用dynamic sql through prepared statements创建要使用字符串连接动态执行的sql语句,然后执行它。

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

DSQL = 'SET ' + concat('DIM_',i) + '= F_DIM_ITEM_GET(DIM_I, i + 1)';
PREPARE stmt FROM DSQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;


您还需要在使用i变量之前声明它。

关于mysql - MySQL过程语法错误,如何为隐式变量赋值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35702637/

10-12 20:54