sql >> Databáze >  >> RDS >> Oracle

Jak používat Oracle PL/SQL k vytvoření deseti podobných tabulek z dané zdrojové tabulky Oracle

Potřebujete dynamic SQL pro to a s Oracle můžeme použít execute immediate k tomu.

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 je k vidění zde

NEBO jedním příkazem

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

Funguje také zde



  1. Uložit pole mysql php

  2. Vyvolání chyby v postgreSQL

  3. Spouštěč v mysql způsobující chybu

  4. sql triggery Mám chybu při ukládání názvu sloupce do proměnné a používám jej pro OLD.myvar v sql triggerech