gpt4 book ai didi

mysql - 带循环的动态添加列

转载 作者:行者123 更新时间:2023-11-29 06:43:20 25 4
gpt4 key购买 nike

我想创建一个动态过程,它会自动为我生成列,但出了点问题。我必须在我的程序中执行几次此操作,但我真的不想手动执行。

这就是我之前使用的代码

    DELIMITER $$
DROP PROCEDURE IF EXISTS RepeatLoopProc$$
CREATE PROCEDURE RepeatLoopProc()
BEGIN
DECLARE x INT;
DECLARE str VARCHAR(255);
Declare @sql nvarchar(4000);
SET x = 0;

REPEAT
SET str = '';
SET str = CONCAT(str,'ossz_levon_het_',x);
SET x = x + 1;
set @sql='ALTER TABLE telephelyi_teszt ADD '+ str +'DOUBLE NULL';

execute @sql;
UNTIL x > 50
END REPEAT;

END$$
DELIMITER ;

我在 Declare @sql nvarchar(4000); 行附近有一个语法错误有什么想法吗?

最佳答案

  • 当您使用DECLARE 在存储过程中创建局部变量时,不要使用@ 前缀。这些用于 session 变量。

  • 但是您无论如何都不应该声明该变量。准备好的语句不适用于局部变量,仅适用于 session 变量。您不必声明 session 变量。

  • 您的 ALTER TABLE 语句有错误。您没有在列名之后和 DOUBLE 之前放置空格。换句话说,该语句将像下面这样,当您执行它时会导致语法错误。

    ALTER TABLE telephelyi_teszt ADD ossz_levon_het_1DOUBLE NULL
  • 您没有准备声明。您不能只执行一个字符串作为语句。请参阅 prepared statements 上的手册中的示例.

  • 在任何具有相同内容的表格中创建 50 列可能是糟糕的设计。考虑创建第二个表,其中包含一列 ossz_levon_het 和对父表 telephelyi_teszt 的引用。这是First Normal Form的推荐以避免重复列组。

关于mysql - 带循环的动态添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com