首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle错误: ORA-00905:缺少关键字

Oracle错误: ORA-00905:缺少关键字
EN

Stack Overflow用户
提问于 2008-11-20 15:06:35
回答 6查看 150.1K关注 0票数 24

执行SQL行:

代码语言:javascript
复制
SELECT * 
  INTO assignment_20081120 
  FROM assignment ;

在oracle中备份一个名为assignment的表时,会出现以下ORACLE错误: ORA-00905:缺少关键字

EN

回答 6

Stack Overflow用户

发布于 2008-11-20 15:12:29

除非SQL表中只有一行,并且ASSIGNMENT_20081120ASSIGNMENT%ROWTYPE类型的本地PL/ ASSIGNMENT变量,否则这不是您想要的结果。

假设您正在尝试创建一个新表,并将现有数据复制到该新表中

代码语言:javascript
复制
CREATE TABLE assignment_20081120
AS
SELECT *
  FROM assignment
票数 29
EN

Stack Overflow用户

发布于 2009-09-28 06:34:04

首先,我想:

"...In Microsoft SQL Server SELECT...INTO会自动创建新表,而Oracle似乎要求您在执行SELECT...INTO语句之前手动创建它...“

但是在手动生成表之后,它仍然不起作用,仍然显示"missing keyword“错误。

因此,我放弃了这一次,通过首先手动创建表,然后使用“经典”SELECT语句来解决它:

代码语言:javascript
复制
INSERT INTO assignment_20081120 SELECT * FROM assignment;

它的工作效果与预期一致。如果有人能就如何正确使用SELECT...INTO给出一个解释,我会很高兴的!

票数 7
EN

Stack Overflow用户

发布于 2009-09-28 10:51:32

可以在PLSQL块中使用select into,如下所示。

代码语言:javascript
复制
Declare
  l_variable assignment%rowtype
begin
  select *
  into l_variable
  from assignment;
exception
  when no_data_found then
    dbms_output.put_line('No record avialable')
  when too_many_rows then
   dbms_output.put_line('Too many rows')
end;

仅当赋值中恰好有1行时,此代码才有效。通常,您将使用这种代码来选择由键编号标识的特定行。

代码语言:javascript
复制
Declare
  l_variable assignment%rowtype
begin
  select *
  into l_variable
  from assignment
  where ID=<my id number>;
exception
  when no_data_found then
    dbms_output.put_line('No record avialable')
  when too_many_rows then
   dbms_output.put_line('Too many rows')
end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/305568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档