使用Oracle选择INTO

Rob*_*uld 125 sql oracle ora-00905

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

SELECT * INTO new_table FROM old_table;
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
Run Code Online (Sandbox Code Playgroud)

有什么想法有什么不对吗?


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

APC*_*APC 267

如果NEW_TABLE已经存在则...

insert into new_table select * from old_table
/
Run Code Online (Sandbox Code Playgroud)

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

create table new_table as select * from old_table
/
Run Code Online (Sandbox Code Playgroud)

  • +1 @Robert:另外,如果您只想复制old_table的模式,请使用负的where子句,例如:create new_table as select*from old_table WHERE 1 = 2. (17认同)

wal*_*lyk 29

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

create table new_table as select * from old_table
Run Code Online (Sandbox Code Playgroud)

  • `select into`是pl/sql的一部分.它是一种用于编写存储过程的语言,与sql标准没有直接关系.是的,Oracle做了许多从未成为标准的东西=) (3认同)
  • @RobertGould:不,`SELECT INTO`是*不是*标准SQL.标准只定义`create table .. as select ..` (2认同)
  • @grahamhanson似乎是W3Schools教程网站的链接,而不是ANSI标准文档. (2认同)

小智 5

用:

create table new_table_name 
as
select column_name,[more columns] from Existed_table;
Run Code Online (Sandbox Code Playgroud)

例子:

create table dept
as
select empno, ename from emp;
Run Code Online (Sandbox Code Playgroud)

如果表已经存在:

insert into new_tablename select columns_list from Existed_table;
Run Code Online (Sandbox Code Playgroud)