Saya mencoba melakukan SELECT INTO menggunakan Oracle. Kueri saya adalah:
SELECT * INTO new_table FROM old_table;
Tapi saya mendapatkan kesalahan berikut:
SQL Error: ORA-00905: missing keyword
00905. 00000 - "missing keyword"
Ada ide apa yang salah?
Perilaku standar di atas seharusnya seperti yang saya pikirkan: Namun Oracle menerapkannya dengan cara yang berbeda dalam dialek SQL Oracle Docs mereka pada Insert ... Pilih
select into
untuk membuat tabel baru bukan bagian dari standar. Standar SQL untuk membuat tabel berdasarkan pilihan adalahcreate table .. as select ...
. Dalam standar SQLSELECT INTO
didefinisikan untuk membaca nilai kolom menjadi variabel dalam bahasa pemrogramanJawaban:
Jika NEW_TABLE sudah ada, maka ...
Jika Anda ingin membuat NEW_TABLE berdasarkan catatan di OLD_TABLE ...
Jika tujuannya adalah untuk membuat tabel baru tapi kosong maka gunakan klausa WHERE dengan kondisi yang tidak pernah benar:
Ingat bahwa CREATE TABLE ... AS SELECT hanya membuat tabel dengan proyeksi yang sama dengan tabel sumber. Tabel baru tidak memiliki kendala, pemicu atau indeks yang mungkin dimiliki oleh tabel asli. Itu masih harus ditambahkan secara manual (jika diperlukan).
sumber
select into
digunakan dalam pl / sql untuk mengatur variabel ke nilai bidang. Sebaliknya, gunakansumber
select into
adalah bagian dari pl / sql. Ini adalah bahasa untuk menulis prosedur tersimpan dan tidak memiliki hubungan langsung dengan standar sql. Dan ya, Oracle membuat banyak hal yang tidak pernah menjadi bagian dari standar =)SELECT INTO
adalah tidak standar SQL. Standar ini hanya mendefinisikancreate table .. as select ..
Menggunakan:
Contoh:
Jika tabel sudah ada:
sumber