我一直在准备使用循环根据变量的值创建新列的过程时遇到麻烦。每当运行该过程时,它都会创建一个名为“ cntr”的列,而不是cntr的值。这是代码:

BEGIN
Declare cntr INT Default 0;
looper: LOOP
set cntr = cntr + 1;
if cntr = 334 THEN
    leave looper;
    end if;
alter table hour_time_stamp
    add column cntr int;
insert into hour_time_stamp (cntr)
        select truncate(time_stamp/3600000000000,0) from `events`
        where unit_id=cntr
        order by time_stamp DESC;
END loop looper;
END


有谁知道如何为列命名变量的值?

最佳答案

您需要执行动态sql。构造一个包含所需命令和cntr值的字符串,然后在其上调用execute。例如:

execute 'alter table hour_time_stamp
    add column ' + cntr + ' int';


要插入到列中,您将必须类似地构造您的插入语句。

出于调试目的,将两个sql字符串保存到varchar变量中并打印出来以确保它们具有cntr值可能会有所帮助。

关于mysql - 在MySQL中是否可以将列的名称命名为变量的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24041005/

10-09 02:11