【发布时间】:2015-07-22 17:23:10
【问题描述】:
我要查询的数据库是 Oracle 12c。数据库版本详细信息如下:
Oracle Database 12c 企业版 12.1.0.2.0 - 64 位生产
PL/SQL 版本 12.1.0.2.0 - 生产
我试图消除在我的 SQL 查询中为每个视图或表加上双引号的需要。
以下作品(来自 Oracle Sql Developer GUI)
select m."Metadata"
from "EvMetadata" m
以下给出错误(来自 Oracle Sql Developer GUI)
select m.Metadata
from EvMetadata m
错误是
ORA-00942: 表或视图不存在 00942. 00000 - “表或视图不存在” *原因:
*操作:行错误:2 列:6
我生成了 DDL,看起来像这样
CREATE TABLE "EVP"."EvMetadata"
("EvMetadataId" NUMBER(10,0) GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ,
"InsertDate" TIMESTAMP (6),
"SessionId" NVARCHAR2(17),
"FileCheckSum" NVARCHAR2(32),
"Metadata" NCLOB,
"Device" NVARCHAR2(20),
"User" NVARCHAR2(20)
) SEGMENT CREATION IMMEDIATE
所以根据下面@toddlermenot 的评论,很可能这就是表格的创建方式 - 使用双引号。我使用 ORM Entity Framework Code First 为我生成架构,所以看起来 ORM 默认使用双引号。
【问题讨论】:
-
这不是 12c 特定的问题,但 Oracle“一直”这样工作。我个人认为引用的表(和其他对象)名称是一个错误,即使许多工具引用了这些名称。 YMMV。