Oracle

2010-02-12 36 views
104

kullanarak SELECT INTO Oracle kullanarak SELECT INTO yapmaya çalışıyorum. Benim sorgu:Oracle

SELECT * INTO new_table FROM old_table; 

Ama aşağıdaki hatayı alıyorum: sorun ne

SQL Error: ORA-00905: missing keyword 
00905. 00000 - "missing keyword" 

bir fikir? Ancak Oracle Oracle Docs on Insert ... Select

+2

'yeni bir tablo oluşturmak için into' seçmek * değil * standardının parçası. Seçime dayalı bir tablo oluşturmak için SQL standardı, tabloyu oluştur ... seç ... olarak. SQL standardında 'SELECT INTO' bir programlama dilindeki –

cevap

222

kullanmak

create table new_table as select * from old_table 
/
+13

+1 @Robert: Artı, eğer sadece eski_table'ın şemasını kopyalamak istiyorsanız, örneğin bir negatif kullanın, örneğin: eski_table'dan select * olarak new_table oluştur NEREDE = 2. –

26

select into bir değişken ayarlamak için pl/sql kullanılan SQL kendi lehçesinde tamamen farklı bir şekilde uygulanmaktadır: Ben aslen düşündük


Standart davranış üzerinde olmalıdır alan değerlerine. New_table zaten mevcutsa, o size OLD_TABLE içinde kayıtlarına dayanarak new_table oluşturmak istiyorsanız Bunun yerine, ...

insert into new_table select * from old_table 
/

...

create table new_table as select * from old_table 
+0

bir değişkene bir sütun değerini okumak için tanımlanmışsa da SELECT INTO Standardın bir parçasıydı. Oracle burada garip bir şey mi yaptı, yoksa asla standartların bir parçası mıydı? –

+3

'seçin '', pl/sql'nin bir parçasıdır. Kayıtlı prosedürleri yazmak için bir dildir ve sql standardına doğrudan bir ilişkisi yoktur. Ve evet, Oracle hiçbir zaman standardın bir parçası olmayan pek çok şey yaptı =) – Rorick

+0

@RobertGould: no, 'SELECT INTO' * * standart SQL değil. Standart, yalnızca "tablo oluştur" ifadesini tanımlar .. select 0 's –

2

Kullanım:

create table new_table_name 
as 
select column_name,[more columns] from Existed_table; 

Örnek:

create table dept 
as 
select empno, ename from emp; 

tablo zaten varsa:

insert into new_tablename select columns_list from Existed_table;