繁体   English   中英

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: missing expression

select * from manager where number = 201;

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

列名不能是number ,这是一个保留字 - 为datatype保留。 例如:

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

因此,发布表描述(以便我们建议做什么)或使用有效查询。

如果您使用保留字作为标识符,那么您需要在使用它的任何地方引用它。 所以,如果你有桌子:

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

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

select * from manager where "NUMBER" = 201;

哪个输出:

数字 某物
201 无效的

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

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM