ORACLE SQL APEX 使用序号给出了缺失表达式的错误

ORACLE SQL APEX using sequence numbers gives an missing expression error

我先为经理创建了序列。

CREATE SEQUENCE manager_seq
START WITH 200
MAXVALUE 299
CYCLE 
CACHE 10;

然后我使用 .NEXTVAL

插入了一些值
INSERT INTO manager
VALUES (manager_seq.NEXTVAL,'')

当我尝试使用 where 语句查询时,它说 ORA-00936: 缺少表达式

select * from manager where number = 201;

为什么它不能使用序列号我该如何使用它们?

列名称不能是 number,这是保留字 - 为 数据类型 保留。例如:

SQL> create table manager (id     number,
  2                        number number);       --> this
                      number number)
                      *
ERROR at line 2:
ORA-00904: : invalid identifier

因此,post table 描述(以便我们可以建议要做什么)或使用有效查询。

如果您使用 reserved word 作为标识符,那么您需要在使用它的任何地方引用它。所以,如果你有 table:

CREATE TABLE manager (
  "NUMBER"  NUMBER,
  something VARCHAR2(10)
);

然后插入行:

INSERT INTO manager VALUES (manager_seq.NEXTVAL,'');
INSERT INTO manager VALUES (manager_seq.NEXTVAL,'');

那么,如果您使用不带引号的标识符:

select * from manager where number = 201;

你得到错误:

ORA-00936: missing expression

但是,如果您使用带有正确大小写的带引号的标识符,那么您可以查询 table:

select * from manager where "NUMBER" = 201;

输出:

NUMBER SOMETHING
201 null

注意:在 Oracle 中,''NULL 是相同的。

db<>fiddle here