用其他方案里面的表名时,方案名要用引号SELECT  FROM "方案".TABLE_NAME这个表名用引号就不知道了。

解决方案 »

  1.   

    一般情况下不需要。如果方案名或者表名需要区分大小写的话,就要加引号。SQL> create table "MyTemp" (f integer);表已创建。SQL> drop table "ChenNan_Temp";表已丢弃。SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
    ------------------------------ ------- ----------
    A                              TABLE
    B                              TABLE
    MyTemp                         TABLE
    PROCEDURE_TABLE                TABLE
    SONG                           TABLE
    T                              SYNONYM
    TEMP_TABLE                     TABLE已选择7行。SQL> select * from mytemp;
    select * from mytemp
                  *
    ERROR 位于第 1 行:
    ORA-00942: 表或视图不存在
    SQL> select * from "MyTemp";未选定行
      

  2.   

    是的,楼主的说的非常有道理!
    加“”的实际意思就是要区别大小写。
    因为windows本身不区分大小写。所以oracle需要用”“来做到这一点。
      

  3.   

    如果都加引号,为什么还会出错呢?那我使用之前不是要区分是不是有大小写吗?还有,我有一个表叫aaa_bbb,是不是有下划线的也要加引号呢?跟Oracle的版本有没有关系?
      

  4.   


    因为oracle在创建表的时候(如果没有用双引号)自动将表名改写成大写字母保存到系统表中,索引表名中含有小写字母时,必须使用双引号。下划线不受影响
      

  5.   

    试验:SQL> create table "LINE97"."TTT"(F1 INTEGER,"f2" INTEGER);表已创建。SQL> SELECT * FROM TTT;未选定行SQL> DESC TTT;
     名称                                                  空?      类型
     ----------------------------------------------------- -------- -----------
     F1                                                             NUMBER(38)
     f2                                                             NUMBER(38)
    没问题啊,是不是你其他地方错了,把代码贴出来,看看到底咋回事
      

  6.   

    SQL> select table_name from user_tables;TABLE_NAME
    ------------------------------
    ELECTOTAL
    VAR_TABLE
    VAR_TABLE_TEMP
    gc_dfss
    gc_dfys
    ls_jg_dfss
    ls_jg_dfys
    yw_yhjbqk
    ------------------------------------------------------
    SQL> select * from electotal;未选定行SQL> select * from "electotal";
    select * from "electotal"
                  *
    ERROR 位于第 1 行:
    ORA-00942: 表或视图不存在SQL> select * from "ELECTOTAL";未选定行---------------------------------------------------------SQL> select * from gc_dfss;
    select * from gc_dfss
                  *
    ERROR 位于第 1 行:
    ORA-00942: 表或视图不存在
    SQL> select * from gc_dfss where 1 = 0;
    select * from gc_dfss where 1 = 0
                  *
    ERROR 位于第 1 行:
    ORA-00942: 表或视图不存在SQL> select * from "gc_dfss" where 1 = 0
    SQL> /未选定行
      

  7.   

    SQL> create table "aa"(a number);表已创建。已用时间:  00: 00: 01.03
    SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
    ------------------------------ ------- ----------
    A                              TABLE
    ARCH                           TABLE
    ARCH_1                         TABLE
    ARCH_LOG                       TABLE
    ARCH_LOG_1                     TABLE
    B                              TABLE
    BONUS                          TABLE
    C                              TABLE
    DEPT                           TABLE
    EMP                            TABLE
    LXJ                            TABLE
    NESTED_PREV_ADDRESS            TABLE
    PLAN_TABLE                     TABLE
    SALGRADE                       TABLE
    T                              TABLE
    ZH_EMP                         VIEW
    Z_EMP                          TABLE
    Z_EMP_1                        TABLE
    aa                             TABLE已选择19行。已用时间:  00: 00: 00.02
    SQL> desc "aa";
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     A                                                  NUMBERSQL>
      

  8.   

    楼主贴出来的代码没有问题啊。oracle数据字典里存放表名、字段名、对象名...都是以大写保存的。(除非你在建这些对象时用“”强制区分大小写);在查询时,如果没加“”,oracle会自动将其转换成大写....从你的查询select table_name from user_tables;可以看出当前模式里,后5个表都是有小写字母的,说明在建表时他们是用“”强制区分大小写的表,所以在查询时要用“”强制区分大小写,以免表名被自动转换成大写去执行。