Ответ 1
Вы можете абсолютно сделать это в одном заявлении!
Попробуйте следующее:
INSERT INTO attribute_list (id, value, name)
SELECT id, 'Y', 'is_leveled'
FROM value_list WHERE val >= 50
Я бы хотел вставить N строк, которые все одинаковы, кроме одного из значений. В частности, это то, что я пытаюсь:
insert into attribute_list (id,value,name)
values
(
select (id,'Y','is_leveled') from value_list where val >= 50
);
Итак, для каждого значения, имеющего значение val >= 50, я вставляю одну строку в список атрибутов. Можно ли это сделать с помощью одной инструкции insert или просто вручную создать эти вставки в excel?
(обратите внимание: это упрощенный пример, упрощающий разъяснение проблемы, поэтому не нужно атаковать ненужность этого конкретного случая)
Вы можете абсолютно сделать это в одном заявлении!
Попробуйте следующее:
INSERT INTO attribute_list (id, value, name)
SELECT id, 'Y', 'is_leveled'
FROM value_list WHERE val >= 50
Вот что Циклы FOR предназначены для.
DECLARE
x NUMBER := 100;
BEGIN
FOR i IN 1..10 LOOP
IF MOD(i,2) = 0 THEN -- i is even
INSERT INTO temp VALUES (i, x, 'i is even');
ELSE
INSERT INTO temp VALUES (i, x, 'i is odd');
END IF;
x := x + 100;
END LOOP;
COMMIT;
END;
Вам нужен INSERT от SELECT. Для этого вы должны опустить VALUES
и просто:
insert into attribute_list (id,value,name)
select (id,'Y','is_leveled') from value_list where val >= 50;
Вот пример: http://psoug.org/reference/insert.html
Вы можете сделать SELECT ... INTO
, если вы можете запросить данные. В противном случае для создания данных вам потребуется использовать PL/SQL
Если у вас есть данные, попробуйте:
select id,'Y','is_leveled'
INTO attribute_list
from value_list where val >= 50