Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara menggunakan Oracle PL/SQL untuk membuat sepuluh tabel serupa dari tabel sumber Oracle yang diberikan

Anda memerlukan dynamic SQL untuk itu dan dengan Oracle kita dapat menggunakan execute immediate untuk melakukannya.

declare
  type array_t is table of varchar2(10);
  array array_t := array_t();
  lo_stmt varchar2(2000);
begin
  select distinct kind
    bulk collect into array
    from all_data;
  
  for i in 1..array.count loop
    --dbms_output.put_line(array(i));
    lo_stmt :=
    'create table '||array(i)||'_data '||
    'as '||
    'select kind,time_period,amount '||
    '  from all_data '||
    ' where kind = '''||array(i)||'''';
    --dbms_output.put_line(lo_stmt);
    execute immediate lo_stmt;
  end loop;
end;
/

Demo dapat dilihat di sini

ATAU dengan satu pernyataan

declare
  type array_t is table of varchar2(4000);
  array array_t := array_t();
  lo_stmt varchar2(2000);
begin
  select distinct 'create table '||kind||'_data '||
    'as '||
    'select kind,time_period,amount '||
    'from all_data '||
    'where kind = '''||kind||''''
    bulk collect into array
    from all_data;
  
  for i in 1..array.count loop
    --dbms_output.put_line(array(i));
    execute immediate array(i);
  end loop;
end;
/

Juga berfungsi di sini



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Judul kolom terus muncul di seluruh keluaran Oracle

  2. Nama kolom kutipan Oracle DB

  3. Permintaan kustom pagination mengambil kesalahan N baris pertama

  4. miskin Hibernate pilih kinerja dibandingkan dengan menjalankan secara langsung - bagaimana debug?

  5. Bisakah saya menonaktifkan pemicu di dalam pemicu di Oracle?