【发布时间】:2015-06-11 14:20:25
【问题描述】:
我的目标是使用 LOOP 命令创建一系列“SET”命令:
SET @value_title_1 = value_1
SET @value_title_2 = value_2
...
SET @value_title_99 = value_99
编号(计数器)需要在 SET 命令的两侧增加等量的 1。
以下是我正在使用的代码的表示,还包括“虚拟条目”(您将通过等式左侧的 SET concat 识别这一点,这是棘手的部分)
delimiter $$
CREATE PROCEDURE set_values_table()
DETERMINISTIC
BEGIN
DECLARE counter INT DEFAULT 1;
simple_loop: LOOP
SET counter=counter+1;
SET concat('@value_title_',counter) = concat('value_',counter);
IF counter = 99 THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
SELECT "procedure completed!";
END$$
delimiter ;
call set_values_table();
不幸的是,SET concat(...) 会产生语法错误。任何接近解决方案的方向或步骤将不胜感激!或者还有其他方法可以达到上述相同的结果吗?
【问题讨论】:
-
嗨,斯坦,您的问题有点不清楚。你想建立一个包含所有
SET语句的字符串吗?我不认为您可以使用字符串代替变量标识符以您想要的方式使用 SQL。 -
我很确定你想做的事(你想做的事)是不可能的,不幸的是。
-
嗨@TZHX - 下面的Ravinder 非常接近,但是,输出仅作为非可执行字符串中继。我需要每个创建的语句真正“设置”给定的值,这样我就可以在使用 SELECT 命令之后分别检索每个语句。
-
Stan:也许如果你建立在 Ravinder 的脚本上(这与我认为可以做的一样)并查看question and answer here 关于在过程中运行动态 sql 语句,你能用它做点什么吗?恐怕我不是 mysql 的普通用户,所以我不确定他们是否会在以这种方式执行后留在范围内。 HTH。
-
确实! TZHX 我能够结合你的建议。而且......我得到了它的工作!我将继续标记@Ravinder 接受的答案,并向您表示敬意,因为您将我引导到最后一个缺失的部分!干杯!
标签: mysql loops variables set increment