2017-07-18 23 views
1

Oracleのテーブルに複数の行を挿入する必要があります。しかし、私を混同しています: TABLE1は新しいものであればよいので、私はシーケンスでOracleに複数行挿入する方法は?

select seq_table1.nextval into table1 form dual 

を使用することはできません。私は存在するtable1にいくつかの行を挿入する必要があります。

とOracleがいることを教えているので、私も

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE) 
      (select seq_paper.nextval,'Multi 8000',1 from dual 
union all select seq_paper.nextval,'Multi 8001',1 from dual) 

を使用することはできません:nextvalunionにならないようにあなたがselectを言い換えることができます

Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the 
following constructs: 
■ A SELECT statement that is combined with another SELECT statement with the 
UNION, INTERSECT, or MINUS set operator ; 
...and other constructs 
+0

は私が値下げでeidtにそれを学びます、どうもありがとうございました –

答えて

2

結果はのようになります。使用は一度、サブクエリ内のデータを作成NEXTVAL

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE) 
    select seq_paper.nextval, NULL, a, b from 
     (select 'Multi 8000' a, 1 b from dual 
     union all 
     select seq_paper.nextval,'Multi 8001',1 from dual) 
1

SQL> CREATE TABLE pager (PAG_ID NUMBER,PAG_PARENT VARCHAR2(10), PAG_ACTIVE NUMBER); 
Table created 

SQL> CREATE SEQUENCE seq_paper START WITH 1 INCREMENT BY 1 MINVALUE 1 NOMAXVALUE; 
Sequence created 

SQL> 

SQL> INSERT INTO pager 
    2  (pag_id, 
    3  pag_parent, 
    4  pag_active) 
    5  SELECT seq_paper.nextval, 
    6    pag_parent, 
    7    pag_active 
    8  FROM (SELECT 'Multi 8000' pag_parent, 
    9      1 pag_active 
10    FROM dual 
11    UNION ALL 
12    SELECT 'Multi 8001', 
13      1 
14    FROM dual); 
2 rows inserted 

SQL> 
関連する問題