Créer une Table Comme au sein de PL/SQL?

Je suis en train de créer une table dans PL/SQL

comment je peux réaliser cela?

reçois

Rapport d'erreur:

ORA-00933: "commande SQL n'est pas correctement terminé"

voici le code que j'ai une erreur avec

DECLARE
  station_id_ms1  NUMBER :=10347;
  realtime_start  DATE   :=to_date('2012-01-01 00:00:00','YYYY-DD-MM HH24:MI:SS');
  realtime_end    DATE   :=to_date('2012-07-01 00:00:00','YYYY-DD-MM HH24:MI:SS');
BEGIN
  EXECUTE IMMEDIATE ('
  CREATE TABLE new_table_name
  AS
  SELECT
  ((realtime - to_date(''01-JAN-1970'',''DD-MON-YYYY'')) * (86400)) AS realtime_ms1,
  magnetic_ms_id,
  ADC_value_pp_2_mgntc_fld_amp(ch2_value,ch2_gain_value,magnetic_ms_id,2) AS B_x_ms1,
  ADC_value_pp_2_mgntc_fld_amp(ch1_value,ch1_gain_value,magnetic_ms_id,1) AS B_y_ms1,
  real_nanosecs2*4/3*360/20e6 AS phase_x_ms1,
  real_nanosecs1*4/3*360/20e6 AS phase_y_ms1
  FROM
      raw_mag
  WHERE
    magnetic_ms_id    = '||station_id_ms1||'
  AND realtime        > '||realtime_start||'
  AND realtime        < '||realtime_end||'
  AND ch1_tune_value  = 0
  AND realtime        < pkg_timezone.change_timezone(gettime,''CET'',''UTC'')
  ');  
END;
pourquoi EXECUTE IMMEDIATE? il suffit de créer le tableau.
parce que vous ne pouvez pas exécuter des instructions DDL à l'intérieur de PL/SQL sans EXÉCUTION IMMÉDIATE.
qui ne demande que la question. Pourquoi PL/SQL? Pourquoi ne pas simplement créer la table? Il existe des scénarios où il est légitime, mais ils sont beaucoup plus nombreux que les cas où cette approche est erronée ou tout simplement faux.
Que voulez-vous dire? "create table" ne semble pas travailler sous PL/SQL! avez-vous un exemple qui montre que ça fonctionne? .... merci
ce que je veux dire c'est, schémas de base de données doit être stable. Nous wouldf s'attendre à des choses comme les tables de train de changer lentement, et ainsi créé avec scripts DDL, de préférence de scripts sous contrôle de code source. Une exigence de créer des tables dans PL/SQL ne correspondent pas à ce modèle. Maintenant, peut-être il ya un réel besoin pour créer des tables de manière dynamique, dans une tâche en arrière-plan. Mais le plus souvent c'est parce que le développeur méconnaît l'exigence et/ou ne sait pas comment écrire un Oracle base de données de l'application.

OriginalL'auteur Data-Base | 2012-03-06