Erstellen Sie die Tabelle Wie in PL/SQL?

Ich versuche eine Tabelle erstellen, die innerhalb von PL/SQL

wie kann ich das erreichen?

immer

Fehlermeldung:

ORA-00933: SQL-Befehl nicht korrekt beendet"

hier ist der code, ich habe Fehler mit

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;
warum EXECUTE IMMEDIATE? nur das erstellen der Tabelle.
da kann man nicht ausführen von DDL-Anweisungen in PL/SQL ohne EXECUTE IMMEDIATE.
das nur stellt sich die Frage. Warum PL/SQL? Warum nicht einfach die Tabelle erstellen? Es gibt Szenarien, in denen es legitim ist, aber Sie sind gewaltig in der Unterzahl, die von den Fällen, in denen dieser Ansatz ist falsch oder einfach nur falsch.
Was meinst du? "create table" scheint nicht zu arbeiten unter PL/SQL! hast du ein Beispiel, dass zeigt, dass es funktioniert? .... Dank
was ich meine ist, Datenbank-schemas sollte stabil sein. Wir wouldf erwarten Sie Dinge wie Tische, um sich langsam zu ändern, und daher erstellt mit DDL-Skripts, vorzugsweise Skripte unter Kontrolle der Quellcodeverwaltung. Eine Anforderung zum erstellen von Tabellen in PL/SQL nicht passt, das Modell. Nun vielleicht gibt es ein echtes Bedürfnis, um Tabellen zu erstellen, die dynamisch in einem hintergrund-job ein. Aber mehr in der Regel, weil die Entwickler verkennt die Anforderung und/oder nicht wissen, wie Sie schreiben, eine richtige Oracle-Datenbank-Anwendung.

InformationsquelleAutor Data-Base | 2012-03-06

Schreibe einen Kommentar