Thanks for the question, ali.
Asked: January 30, 2016 - 12:34 pm UTC
Last updated: January 31, 2016 - 12:57 pm UTC
Version: oracle 10g
Viewed 1000+ times
SQL> drop sequence seq_ref_ext_grpe; Sequence dropped. SQL> create sequence seq_ref_ext_grpe; Sequence created. SQL> SQL> create or replace 2 FUNCTION f1 RETURN number IS 3 val number(7); 4 BEGIN 5 select seq_ref_ext_grpe.nextval into val from dual;--recupere la sequence actuelle 6 dbms_output.put_line('val == '||val); 7 return val; 8 END; 9 / Function created. SQL> SQL> drop table t purge; Table dropped. SQL> create table T ( id int, p int ); Table created. SQL> SQL> set serverout on SQL> SQL> MERGE INTO T 2 USING ( 3 select 10 id from dual 4 ) d 5 ON (t.id = d.id) 6 WHEN MATCHED THEN 7 UPDATE 8 SET p = 10 9 WHEN NOT MATCHED THEN 10 INSERT (id,p) 11 VALUES ( f1(),99 ); val == 1 1 row merged. SQL> SQL> select * from t; ID P ---------- ---------- 1 99 SQL> SQL> MERGE INTO T 2 USING ( 3 select 10 id from dual 4 ) d 5 ON (t.id = d.id) 6 WHEN MATCHED THEN 7 UPDATE 8 SET p = 10 9 WHEN NOT MATCHED THEN 10 INSERT (id,p) 11 VALUES ( f1(),99 ); val == 2 1 row merged. SQL> SQL> select * from t; ID P ---------- ---------- 1 99 2 99 SQL> SQL> MERGE INTO T 2 USING ( 3 select 10 id from dual 4 ) d 5 ON (t.id = d.id) 6 WHEN MATCHED THEN 7 UPDATE 8 SET p = 10 9 WHEN NOT MATCHED THEN 10 INSERT (id,p) 11 VALUES ( f1(),99 ); val == 3 1 row merged. SQL> SQL> select * from t; ID P ---------- ---------- 1 99 2 99 3 99 SQL> SQL>
ali chahib, January 31, 2016 - 10:21 am UTC
Check out more PL/SQL tutorials on our LiveSQL tool.
PL/SQL reference manual from the Oracle documentation library