【问题标题】:Missing select keyword in Oracle SQLOracle SQL 中缺少选择关键字
【发布时间】:2019-04-03 18:31:45
【问题描述】:

我收到这个错误

SQL 错误:ORA-00928:缺少 SELECT 关键字
00928. 00000 - “缺少 SELECT 关键字”`

当我尝试像这样插入时

create table certf
(
    certificate_id integer primary key,
    certificate_name varchar(100) not null,
    certificate_content varchar(300) not null
);

insert into certf (&certificate_id, &certificate_name, &certificate_content);

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    实际上你错过了values

    insert into certf (certificate_id, certificate_name, certificate_content)
        values (&certificate_id, &certificate_name, &certificate_content);
    

    请注意,我还将列列表添加到 insert。这是最佳做法。

    【讨论】:

    • 您可以解释错误消息“需要值(..)或选择..”。由于缺少值,因此需要选择。
    【解决方案2】:

    如果这些值应该是您作为替换值提供的值,那么您缺少 values 关键字:

    insert into certf values (&certificate_id,&certificate_name,&certificate_content);
    

    但您需要将字符串值放在引号中:

    insert into certf values (&certificate_id,'&certificate_name','&certificate_content');
    

    你也应该提供列名:

    insert into certf (certificate_id,certificate_name,certificate_content)
    values (&certificate_id,'&certificate_name','&certificate_content');
    

    使用您当前的代码,解析器会看到第一个列表 - 可能,但在这种情况下实际上是无效的 - 标识符,即列名;因为它还没有看到 values 关键字。它被视为:

    insert into certf (42,some_name,some_content);
    

    完成之后,当它仍然没有看到 values 关键字或值列表时,它期望这是一个 insert ... select 构造。你可以那样做:

    insert into certf (certificate_id,certificate_name,certificate_content)
    select &certificate_id,'&certificate_name','&certificate_content' from dual;
    

    但你没有这样做。所以它也看不到select,它会抛出你看到的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-24
      • 2012-09-26
      • 2016-11-09
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      相关资源
      最近更新 更多