使用 Oracle 选择 INTO

我正在尝试使用 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... 选择

430856 次浏览

在 pl/sql 中使用 select into将变量设置为字段值

create table new_table as select * from old_table

如果 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
/

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

用途:

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;

尝试使用下面的语句,而不是在 Oracle 中使用 select into:

Select * from (select * from table1) table2;