Нет, вы не можете динамически создавать и выполнять оператор FORALL...INSERT...
динамически.Вы можете , однако динамически создать оператор INSERT в форме:
INSERT ALL
INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES (VALUE1A,VALUE2A,VALUE3A)
INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES (VALUE1B,VALUE2B,VALUE3B)
INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES (VALUE1C,VALUE2C,VALUE3C)
Или, если данные, которые вы хотите вставить в вашу таблицу, находятся в другой таблице, вы можете найти *Оператор 1007 *, например
INSERT INTO TABLENAME
SELECT FIELD1, FIELD2, FIELD3
FROM OTHER_TABLE
WHERE something <> something_else
, или вы можете использовать оператор MERGE, аналогичный
MERGE INTO TABLENAME t
USING (SELECT FIELD1, FIELD2, FIELD3 FROM OTHER_TABLE) o
ON (t.FIELD1 = o.FIELD1)
WHEN NOT FOUND THEN
INSERT (FIELD1, FIELD2, FIELD3) VALUES (o.FIELD1, o.FIELD2, o.FIELD3)
, который будет выполнять массовую вставку на основе данных, указанных в USING
предложение и критерии соответствия в предикате ON
.
Таким образом, могут быть способы сделать то, что вы хотите, но не зная специфики источника ваших данных и того, как вы манипулируете этими данными перед вставкойВ вашей базе данных сложно сказать, будет ли применен какой-либо из них.
Удачи.