为了账号安全,请及时绑定邮箱和手机立即绑定

无法在过程循环中正确声明变量

无法在过程循环中正确声明变量

宝慕林4294392 2021-04-06 17:26:49
这在驱赶我香蕉。无论如何,我不是mysql专家。我的目标是向表中添加大量列。我已经尝试了几种方法,并且在DECLARE @FooA NVARCHAR(MAX);上使过程阻塞了。不知道为什么。我感谢任何指示...USE mydatabase;DELIMITER $$DROP PROCEDURE IF EXISTS RepeatLoopProc$$CREATE PROCEDURE RepeatLoopProc()BEGIN   DECLARE x INT;   DECLARE sn VARCHAR(30);   DECLARE dr VARCHAR(48);   DECLARE @FooA NVARCHAR(MAX);   SET x = 0;   WHILE (x <= 150) DO     SET sn = CONCAT('drivesn_', x);     SET dr = CONCAT('driveinf_', x);     SET x = x + 1;     SET @FooA = 'ALTER TABLE DRIVE_MASTER ADD ' + sn + ' VARCHAR(30), ADD ' + dr + ' VARCHAR(48)';     EXEC sp_executesql @FooA;   END WHILE;END$$DELIMITER ;当我这样做时,我得到:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@FooA NVARCHAR(MAX);我的前额从撞到我的桌子上变得扁平了。最终目标是将驱动器n_0,驱动器inf_0,驱动器n_1,驱动器inf_1等列一直添加到驱动器n_150和驱动器inf_150。分别为每个键入VARCHAR(30)和VARCHAR(48)。
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我已经有多个表。基本上,我使用它来分类主机中的驱动器序列号。主机最多可以有150个驱动器。其他表包含网络接口信息(macaddrs等)。所有这些都由一个共同的索引值捆绑在一起。对于具有150个磁盘驱动器的系统,除了150列之外,我看不到其他方法。要么那个,要么我错过了一个基本概念。


查看完整回答
反对 回复 2021-04-16
  • 2 回答
  • 0 关注
  • 284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信