Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

UPSERT vào bảng với tên bảng động

MERGE hoạt động hoàn toàn tốt với SQL động nguyên bản (THỰC HIỆN NGAY LẬP TỨC):

create table so_test(pk number not null primary key, value varchar2(20));

insert into so_test(pk, value) values(1, 'one');

declare
  l_SQL varchar2(4000);
  l_tablename varchar2(4000) default 'so_test';
begin
  l_SQL := 'merge into ' || l_tablename || ' target' ||
    ' using (select 1 pk, ''eins'' value from dual union all
             select 2 pk, ''zwei'' value from dual) source
      on (target.pk = source.pk)
      when matched then 
        update set target.value = source.value
      when not matched then
        insert values(source.pk, source.value)      
  ';
  dbms_output.put_line(l_sql);
  execute immediate l_SQL;
end; 

Bạn có thể vui lòng đăng thông báo lỗi mà bạn gặp phải khi sử dụng MERGE không?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tôi có thể chèn nhiều hàng vào oracle với một giá trị thứ tự?

  2. Tham gia chéo trong Oracle

  3. Oracle không xóa con trỏ sau khi đóng tập kết quả

  4. Tạo cơ sở dữ liệu mới và kết nối mới trong Oracle SQL Developer

  5. Không thể định vị Oracle.DataAccess.dll mặc dù nó tồn tại