Sam*_*evx 0 sql oracle oracle12c
我正在查询的数据库是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
Run Code Online (Sandbox Code Playgroud)
以下给出错误(来自 Oracle Sql Developer GUI)
select m.Metadata
from EvMetadata m
Run Code Online (Sandbox Code Playgroud)
错误是
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
Run Code Online (Sandbox Code Playgroud)
因此,根据@toddlermenot 下面的评论,很可能这就是表的创建方式 - 带双引号。我使用 ORM Entity Framework Code First 为我生成架构,所以看起来 ORM 默认情况下使用双引号。
也许您创建的表格带有双引号?使用双引号会保留大小写,并且由于示例中的表名同时包含大写和小写字母,因此只有在使用双引号时 Oracle 才能找到它。
默认情况下,如果没有双引号,Oracle 可能会使用单个大小写(大写?),而不管表中可能有任何大小写。
例如:如果您使用以下命令创建表
create table "TaBlE_NaMe" (blah..)
Run Code Online (Sandbox Code Playgroud)
那么您必须在 SELECT 中使用双引号。
如果您使用创建表
create table TaBlE_NaMe (blah..)
Run Code Online (Sandbox Code Playgroud)
不带引号的 SELECT 应该可以正常工作。(如果表名的所有字母都是大写,它也可以与引用一起使用)
| 归档时间: |
|
| 查看次数: |
4483 次 |
| 最近记录: |