sql >> Database teknologi >  >> RDS >> Oracle

Sådan bruger du Oracle PL/SQL til at skabe ti lignende tabeller fra en given Oracle-kildetabel

Du skal bruge dynamic SQL til det og med Oracle kan vi bruge execute immediate at gøre det.

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;
/

Demoen kan ses her

ELLER med et enkelt udsagn

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;
/

Virker også her



  1. Vælg række, der indeholder det nøjagtige tal i kolonne med et sæt tal adskilt med komma

  2. Sådan tilføjes fremmednøgle (MySQL)

  3. Import af 8GB mysql dump tager lang tid

  4. jQuery Autofuldførelse Mysql PHP