Ich versuche mit Oracle ein SELECT INTO durchzuführen. Meine Anfrage lautet:
SELECT * INTO new_table FROM old_table;
Aber ich bekomme folgenden Fehler:
SQL Error: ORA-00905: missing keyword
00905. 00000 - "missing keyword"
Irgendwelche Ideen, was ist los?
Das Standardverhalten des oben genannten sollte so sein, wie ich es ursprünglich gedacht hatte: Oracle hat es jedoch in seinem eigenen Dialekt von SQL Oracle Docs on Insert ... Select völlig anders implementiert
select into
Das Erstellen einer neuen Tabelle gehört nicht zum Standard. Der SQL-Standard zum Erstellen einer Tabelle basierend auf einer Auswahl lautetcreate table .. as select ...
. Im SQL-StandardSELECT INTO
ist definiert, einen Spaltenwert in eine Variable in einer ProgrammierspracheAntworten:
Wenn NEW_TABLE bereits existiert, dann ...
Wenn Sie NEW_TABLE basierend auf den Datensätzen in OLD_TABLE erstellen möchten ...
Wenn der Zweck darin besteht, eine neue, aber leere Tabelle zu erstellen, verwenden Sie eine WHERE-Klausel mit einer Bedingung, die niemals wahr sein kann:
Denken Sie daran, dass CREATE TABLE ... AS SELECT nur eine Tabelle mit derselben Projektion wie die Quelltabelle erstellt. Die neue Tabelle enthält keine Einschränkungen, Trigger oder Indizes, die die ursprüngliche Tabelle möglicherweise hat. Diese müssen noch manuell hinzugefügt werden (falls erforderlich).
quelle
select into
wird in pl / sql verwendet, um eine Variable auf Feldwerte zu setzen. Verwenden Sie stattdessenquelle
select into
ist Teil von pl / sql. Es ist eine Sprache zum Schreiben gespeicherter Prozeduren und hat keine direkte Beziehung zum SQL-Standard. Und ja, Oracle hat viele Dinge gemacht, die nie Teil des Standards waren =)SELECT INTO
ist kein Standard-SQL. Der Standard definiert nurcreate table .. as select ..
Verwenden:
Beispiel:
Wenn die Tabelle bereits vorhanden ist:
quelle