用select * from 表名 说找不到表
用select * from "表" 却能查出来请问高手们,这是为什么?

解决方案 »

  1.   

    在Oracle中, 对表名有一定的要求. 正常情况下, 是字符加数字,加下划线的方式, 而且默认情况下, 表名会自动转换成大写. 
    如果表名中含有特殊字符,比如空、#%*等, 或表名为小写, 则需要用双引号引起来, 创建表的时候这样,对表操作时也这样。 你的问题, 我想应该是在SQL导入到ORACLE中时, 要求输入一个表名,你要输入的是小写名, 你的很可能是这个情况。
      

  2.   

    你的问题, 我想应该是在SQL导入到ORACLE中时, 要求输入一个表名,你已经输入的是小写名, 你的很可能是这个情况。改成大写名称,并按规定定义表名。 
      

  3.   

    这是因为把表从sql server导入oracle时,在oracle中相当于用了create table "xxx",所以在查询的时候也要加上双引号。 
      

  4.   

    很多原因:
    1. 上面朋友说的,表名的问题,Oracle数据库的数据字典默认是按字母
    的大写名字来存放表的信息,另外,如果表名含有特殊字符比如"ab.c",需要
    加双引号来访问
    2. 表的owner的问题。你可以用sys用户登陆Oracle数据库后,查看dba_tables
    来确认表的owner是谁. select owner from dba_tables where table_name='表名',
    如果表的owner不是系统级别的用户,必须确保这个用户有访问这个表的权限,如果没有
    权限需要赋予权限.
    SQL> grant select on 表名 to 用户名
      

  5.   

    1.sql里是区分大小写的,oracle都是默认大写的,所以这个要考虑到。2.表的权限问题,看下你登录的当前用户有没有访问该表的权限。3.看下表的命名有没有用到oracle的一些特殊字符。
      

  6.   

    在从SQL导表到ORACLE中时, 要求Oracle表名是首字母大写的表名即可。