删除表的异常现象

[复制链接]
查看11 | 回复7 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
Oracle92010 + WinXP
我建立了两个表:ABC 和 abc
我删除表ABC时用:TRUNCATE TABLE ABC;

再用: DROP TABLE ABC;
然后ABC没了,同时 DESC abc 说对象abc不存在了。
但我在 SELECT * FROM TAB;中能看见表abc
但是不能DROP,DESC,SELECT..........
请问各位大峡是什么原因??
谢谢!!
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
[ora@nbserver admin]$ sqlplus test/test
SQL*Plus: Release 8.1.7.0.0 - Production on Sun Feb 9 18:04:03 2003
(c) Copyright 2000 Oracle Corporation.All rights reserved.

Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.1 - Production
With the Partitioning option
JServer Release 8.1.7.0.1 - Production
SQL> create table abc (id char(1));
Table created.
SQL> create table ABC (id char(1));
create table ABC (id char(1))

*
ERROR at line 1:
ORA-00955: name is already used by an existing object

SQL> create table "abc" (id char(1));
Table created.
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
ABC
COLOCATED
DISORGANIZED
PLAN_TABLE
TEST
TMPTEST
TST
abc
8 rows selected.
SQL> drop table abc
2;
Table dropped.
SQL> desc abc
ERROR:
ORA-04043: object abc does not exist

SQL> desc "abc";
Name
Null?Type
----------------------------------------- -------- ----------------------------
ID
CHAR(1)
SQL> drop table ABC;
drop table ABC
*
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> drop table "ABC";
drop table "ABC"
*
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> drop table "abc";
Table dropped.
SQL>
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
谢谢!!我已经删除了。
能不能说说"abc"和abc的区别吗??
我的这两个表是我导入的,不是我建立的所以不知道还要用引号。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
oracle对字母大小写敏感。
abc: 会当作"ABC"
“abc” : 则是: "abc"
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
记起来了,刚才在DBA HandBook里看的,好象是Oracle在存储的时候把字符全转换为大写,
除非用""引起来。
是吧??
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
SQL> create table abc (id char);
Table created.
SQL> create table "ABC" (id char);
create table "ABC" (id char)

*
ERROR at line 1:
ORA-00955: name is already used by an existing object
SQL> create table "abc" ( id char );
Table created.
谢谢mistfire的提醒,呵呵,不加双引号,原来是 当作 "ABC"了的说
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
你用大写的建时用了引号了吗?,如果没有用,那么删除的应当是abc。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
没有。刚才又试了一下。
输入abc后在系统中存的是ABC(Oracle自动转换为大写),从User_Tables(Tab)中查询就看见
表名为ABC的表。
要建立表名为abc的表,就用 Create Table "abc",这样在“”之内的字符不会被Oracle转换为
大写。
谢谢大家!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行