错误1178:mariadb列存储中的存储过程中的语法错误

问题描述 投票:0回答:1

我尝试生成一个存储过程,该存储过程允许我更新数据库中的许多表,但是当我尝试使用列存储引擎执行该存储过程时,出现了不支持的过程语法错误。我已经在网络上寻找它,但无法找到问题所在。如果您有任何想法,我可以在此处进行操作。

DELIMITER $$
CREATE PROCEDURE update_sp_aggregated()
BEGIN
DECLARE finished INTEGER DEFAULT 0;
DECLARE tableName varchar(255) DEFAULT "";

DECLARE cursor_update 
CURSOR FOR 
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_name like 'sp_aggr%' ;
OPEN cursor_update;
updateAggregated: LOOP
FETCH cursor_update into tableName;
IF finished = 1 THEN 
            LEAVE updateAggregated;
        END IF;

SET @sql = CONCAT('ALTER TABLE ', tableName, ' ADD COLUMN col2 varchar(5)');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @sql = CONCAT('UPDATE ', tableName, ' SET col2= LEFT(col1, 1)');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

        END LOOP updateAggregated;
        CLOSE cursor_update;
  END $$

-- declare NOT FOUND handler
    DECLARE CONTINUE HANDLER 
        FOR NOT FOUND SET finished = 1;
DELIMITER ;

CALL update_sp_aggregated();
sql stored-procedures syntax mariadb columnstore
1个回答
0
投票

最后找到了,正如我的评论中所述,问题是不允许使用update命令。要解决它,您需要通过将其设置为0来更改变量infinidb_vtable_mode。全部描述herehere

© www.soinside.com 2019 - 2024. All rights reserved.