为什么下面的陈述
select * from expertrule where rule_id = '1';返回此错误
ORA-00904: "RULE_ID": invalid identifier而
select * from expertrule where "rule_id" = '1';行得通!
对于表的每一列(只有这个表)也是如此。此表中的所有列都需要围绕其名称引用。为什么?
CREATE TABLE "TEST"."expertrule"
( "rule_id" NUMBER(*,0),
"name" VARCHAR2(256 BYTE),
"description" VARCHAR2(256 BYTE),
"ruleaccess" VARCHAR2(4000 BYTE),
"ruledisable" VARCHAR2(4000 BYTE),
"userssn" VARCHAR2(256 BYTE),
"departmentid" VARCHAR2(256 BYTE),
"active" CHAR(1 BYTE)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TESTTABLESPACE" ;发布于 2014-04-24 10:16:55
您使用双引号创建了您的列,因此Oracle现在要求您始终使用标识符引用该列,并尊重情况。如果删除双引号,Oracle总是将名称转换为大写,因此如果没有双引号,则不区分大小写。
如果您在创建列时没有标识符,则此操作将有效:
where rulE_id
where RULE_ID此外,在创建表时,除非使用保留字,否则不需要引号。
https://dba.stackexchange.com/questions/63813
复制相似问题