大侠:
    最近需要用数据库中数据字典"all_tab_columns"来查表的列信息,如:”select column_name,column_length from all_tab_columns where table='表名';
  但发现了几个问题。
  1 返回的信息中列的排列顺序与建表时列的排列顺序不一致,这样就导致无法运用all_tab_columns中查出来的列的顺序将数据插到表中。
  2 返回的列的长度与建表时规定的列的长度不一致。
  呵呵呵,有没有那位大侠能帮帮忙?在这谢谢了 ,我现在仅有20分,不知道够不够?

解决方案 »

  1.   

    select column_name,t.CHAR_LENGTH from all_tab_columns t where table_name='xx'
    我的就是按顺序来的,也是一样的。
    你也可以直接desc tablename来查看;
      

  2.   

    我测的时候字段顺序是一样的,但如果字段类型为number的话,则查出来长度都为0,varchar2字段长度是一致的。如果是number类型的列,则看all_tab_columns表中data_precision与data_scale这二列的值
      

  3.   

    返回信息与你建表的排列顺序不一致不影响你将数据插到表中啊!
    insert into tableName(field1,field2,...) values(field1Value,field2Value...);
    第二个问题参考2楼的书法。
      

  4.   

    > 1 返回的信息中列的排列顺序与建表时列的排列顺序不一致,这样就导致无法运用all_tab_columns中查出来的列的顺序将数据插到表中。10g里,我看到dba_tab_columns 里有个column_id字段, 按这个字段排序即可
      

  5.   

    字段类型要看几个字段的:data_type
    data_length
    data_precision
    data_scale

      

  6.   

    要求是将文件中的数据插入某个表中,但是表名不确定,得校验文件中各个字段数据类型与表中的列的类型是否相同,相同才可以插入。顺序是这样的!
      1,读入文件中的数据。
      2,根据别的信息得到某个表名。
      3,用all_tab_columns 检出该表名的列名和列的类型信息。
      4,用读入的文件数据的各个字段信息依次与该表的列的类型校验,如果所有字段的类型与对应顺序列的属性都相配,则将读入的文件数据插入数据库中
      现在,如果读入的文件数据的各个字段信息与建表的列排列顺序一致,但用all_tab_columns检出的列信息不是按建表排列的,可以插入的文件数据就变成非法的数据了.
      呵呵呵呵,如果表的列名不多,检出来是一致的,但是表有很多列时,就不一致了。
      

  7.   

    我试了一下,用Order by column_id 就好使了!
     select column_name 
     from all_tab_columns
     where table_name='**'
     Order by column_name
    真是太谢谢大家了!