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
我先为经理创建了序列。
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