【问题标题】:"ORA-00928: missing SELECT keyword" error while using sequence function使用序列函数时出现“ORA-00928:缺少 SELECT 关键字”错误
【发布时间】:2013-04-04 13:56:12
【问题描述】:

对不起,我是 SQLPlus 的新手!

所以在这里,我有一个名为 iowe 的表,其中预加载了四条记录。看起来是这样的:

名称 数量 序列号 ---------- ---------- ------------- 普拉文 20500 1 肉山 5000 2 罗希特 5000 3 沙市8000 4

在输入这四条记录之前,我对 SQL 中的序列函数一无所知。所以我试着把它暗示到这张桌子上。我想输入一条新记录,名称为“XXX”,金额为500,使用序列命令,我想要“序列号" 自动递增。

所以我创建了一个名为 iowesqn 的序列,当我 select * from user_sequences 时,它看起来像这样:

SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER ------------------ ---------- ---------- ------------ - - ---------- ------------ SQN 1 5 2 N N 0 3 IOWESQN 1 1.0000E+27 1 N N 0 7

请忽略序列 SQN

为了插入序列IOWESQN,我使用了这个命令:"insert into iowe(name, amount, "Serial Number") values('XXX', 500, iowesqn.nextval)"

一切正常。序列号列在每个条目上都以 1 递增。但是,当我尝试 "insert into iowe ('&name', '&amount', "Serial Number") value(iowesqn.nextval));" 时,它会询问我的名称和金额但是就在那时(输入金额后),它会引发错误。其内容为:“ORA-00928:缺少 SELECT 关键字”

这是在输入量之后出现的全部内容:

老1:插入iowe('&name', '&amount', "Serial Number") value(iowesqn.nextval)) 新1:插入iowe('ret','ert',“序列号”)值(iowesqn.nextval)) 插入 iowe ('ret', 'ert', "序列号") 值(iowesqn.nextval)) * 第 1 行的错误: ORA-00928: 缺少 SELECT 关键字

请告诉我我在(或(极不可能)它是)做错了什么。

提前致谢。

【问题讨论】:

    标签: sequence sqlplus ora-00928


    【解决方案1】:

    你的说法是错误的。就那么简单。有了这个固定的声明:

    插入 iowe(name, amount, "Serial Number") values('XXX', 500, iowesqn.nextval)

    您可能打算用变量代替您的值,而不是您的字段?

    插入 iowe(name, amount, "Serial Number") values('&name', &amount, iowesqn.nextval)

    【讨论】:

    • 甜蜜!它就像一个魅力!有没有办法将序列 IOWESQN 的 user_sequences 中的 LAST_NUMBER 列删除或更改为其他任何内容?说6?现在是11点。这甚至可能吗?你想让我在新帖子中问这个问题吗?
    • 如果我没记错的话你不能重置这个号码。但是,您可以使用(例如)6 作为新的起始值重新创建序列。
    【解决方案2】:

    我刚刚发现另一种情况是“缺少 SELECT 关键字”。我尝试在引号中插入列名,如下所示:

    插入订阅('SUBSCRIPTION_ID','SUBSCRIPTION_NAME','CREATED_DATE')值('558768','','20-JAN-20 10.37.47.901000000 PM');

    一旦我删除了列名周围的引号,它就起作用了:

    插入订阅 (SUBSCRIPTION_ID,SUBSCRIPTION_NAME,CREATED_DATE) 值('558768','','20-JAN-20 10.37.47.901000000 PM');

    【讨论】:

    • 谢谢你在使用 golang 和 Godror 库时对我有用
    【解决方案3】:

    其他用户可能一直在使用value 而不是values。这是您可能会遇到此问题的另一种情况。

    【讨论】:

      【解决方案4】:

      这是因为你错过了提及列列表

      插入表名(1,'alskdjflasf')

      应该是这样的 插入 table_name (id,name)values(1.'lakjsdflasdf')

      【讨论】:

        猜你喜欢
        • 2018-07-23
        • 2018-09-17
        • 2018-01-20
        • 2018-05-13
        • 1970-01-01
        • 2019-08-17
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多