1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
SQL> CREATE TABLE CNF (usr number(3), appli varchar2(5), cmp varchar2(5));
Table created.
Elapsed: 00:00:00.01
SQL> CREATE TABLE CNF_tmp (usr number(3), appli varchar2(5), cmp varchar2(5));
Table created.
Elapsed: 00:00:00.01
SQL>
SQL> INSERT INTO CNF (usr, appli, cmp) VALUES (1, 'APP01', 'PTF01');
1 row created.
Elapsed: 00:00:00.00
SQL> INSERT INTO CNF (usr, appli, cmp) VALUES (2, 'APP01', 'PTF01');
1 row created.
Elapsed: 00:00:00.00
SQL> INSERT INTO CNF (usr, appli, cmp) VALUES (4, 'APP01', 'PTF08');
1 row created.
Elapsed: 00:00:00.01
SQL> INSERT INTO CNF (usr, appli, cmp) VALUES (5, 'APP01', 'PTF05');
1 row created.
Elapsed: 00:00:00.00
SQL>
SQL> INSERT INTO CNF_tmp (usr, appli, cmp) VALUES (1, 'APP01', 'PTF01');
1 row created.
Elapsed: 00:00:00.01
SQL> INSERT INTO CNF_tmp (usr, appli, cmp) VALUES (2, 'APP01', 'PTF01');
1 row created.
Elapsed: 00:00:00.00
SQL> INSERT INTO CNF_tmp (usr, appli, cmp) VALUES (6, 'APP01', 'PTF06');
1 row created.
Elapsed: 00:00:00.00
SQL> INSERT INTO CNF_tmp (usr, appli, cmp) VALUES (7, 'APP01', 'PTF01');
1 row created.
Elapsed: 00:00:00.01
SQL> commit;
Commit complete.
SQL> merge INTO cnf a
2 USING (
3 SELECT b.rowid bid, c.rowid cid, usr, appli, cmp
4 FROM cnf b
5 NATURAL full OUTER JOIN cnf_tmp c
6 WHERE b.rowid IS NULL OR c.rowid IS NULL) d
7 ON (a.rowid = d.bid)
8 when NOT matched then INSERT(a.usr, a.appli, a.cmp) VALUES (d.usr, d.appli, d.cmp)
9 when matched then UPDATE SET a.usr = a.usr DELETE WHERE 1 = 1;
4 rows merged.
Elapsed: 00:00:00.04
SQL> select * from cnf;
USR APPLI CMP
---------- ----- -----
1 APP01 PTF01
2 APP01 PTF01
7 APP01 PTF01
6 APP01 PTF06 |
Partager