151

我正在尝试使用 Oracle 执行 SELECT INTO。我的查询是:

SELECT * INTO new_table FROM old_table;

但我收到以下错误:

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

有什么想法有什么问题吗?


上面的标准行为应该和我最初想的一样:但是 Oracle 在他们自己的 SQL Oracle Docs on Insert 方言中完全不同地实现了它... Select

4

3 回答 3

303

如果 NEW_TABLE 已经存在,那么...

insert into new_table 
select * from old_table
/

如果您想根据 OLD_TABLE 中的记录创建 NEW_TABLE ...

create table new_table as 
select * from old_table
/

如果目的是创建一个新的但为空的表,则使用 WHERE 子句,其条件永远不会为真:

create table new_table as 
select * from old_table
where 1 = 2
/

请记住,CREATE TABLE ... AS SELECT 只创建一个与源表具有相同投影的表。新表没有原始表可能具有的任何约束、触发器或索引。这些仍然必须手动添加(如果需要)。

于 2010-02-12T07:22:53.170 回答
34

select into在 pl/sql 中用于将变量设置为字段值。相反,使用

create table new_table as select * from old_table
于 2010-02-12T07:17:34.387 回答
5

采用:

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

例子:

create table dept
as
select empno, ename from emp;

如果表已经存在:

insert into new_tablename select columns_list from Existed_table;
于 2013-06-06T06:33:09.920 回答