Как использовать цикл для вставки / изменения нескольких столбцов в таблице?

Я хочу вставить десять столбцов в таблицу в процедуре SQL HANA.

Следующее - то, что я сделал, и мне кажется, что это нормально, но по какой-то причине система выдает синтаксическую ошибку.

Что я хочу: 10 новых названных столбцов Col_1, Col_2..Col_10 каждый из типа INT,

BEGIN
--DECLARE arr INT ARRAY ;
DECLARE i INT ;
DECLARE str1 STRING;
DECLARE str2 STRING;

str1:= 'Col_';


for i in 1 ..10 do 
     str2 := :str1 || :i;
     exec 'ALTER TABLE "Table_Name" ADD (:str2 INT)';
end for;



END;

Я попытался использовать ту же команду alter, введя имя столбца в ADD() вместо использования переменной, и она работает просто отлично.

1 ответ

Решение

Это похоже на плохой дизайн схемы, в любом случае попробуйте объединить его:

BEGIN
--DECLARE arr INT ARRAY ;
DECLARE i INT ;
DECLARE str1 STRING;
DECLARE str2 STRING;
DECLARE str3 STRING;

str1:= 'Col_';

for i in 1 ..10 do 
     str2 := :str1 || :i;
     str3 := 'ALTER TABLE "Table_Name" ADD ('|| :str2 ||' INT)';
     exec str3;
end for;

END;

Если бы это был один раз, я бы просто использовал явные множественные операторы alter:

ALTER TABLE "Table_Name" ADD (Col_1 INT);
ALTER TABLE "Table_Name" ADD (Col_2 INT);
ALTER TABLE "Table_Name" ADD (Col_3 INT);
--...
ALTER TABLE "Table_Name" ADD (Col_10 INT);
Другие вопросы по тегам