Oracle SQL-1つのステートメントでテーブルに複数の行を挿入しますか?
値の1つが異なることを除いて、すべて同一のN行を挿入したいと思います。具体的には、これは私が試していることです:
insert into attribute_list (id,value,name)
values
(
select (id,'Y','is_leveled') from value_list where val >= 50
);
したがって、val> = 50のすべての値について、1つの行をattribute_listに挿入します。これは1つの挿入ステートメントで実行できますか、またはこれらの挿入をExcelで手動で生成する必要がありますか?
(注:これは問題を明確にするために簡略化された調理済みの例であるため、この特定のケースの不要な部分を攻撃する必要はありません)
これは1つのステートメントで完全に実行できます。
これを試して:
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;
SELECTからのINSERTが必要です。これを行うには、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