请教一个查询语句:未知表结构除了已知一个字段。查询除掉这个字段的所有纪录。

解决方案 »

  1.   

    我想步骤应该这样:
    1.找出对应的表:select table_name from user_tab_cols where column_name='已知列名'
    2.找出对应的列:select column_name from user_tab_cols where table_name='1查出的表名' and column_name<>'已知列名'
    3.查询:根据2的结果构造查询语句不知哪位能一条语句就搞定,期待...
      

  2.   

    1:desc tablename不就知道表结构了2:你到底想在什么地方用?
      

  3.   

    回复:wiler(@_@) 
    表名是已知的,表结构除了已知一个字段之外都不知道。想得到除掉该字段之外的所有记录。
    得到该表的其他字段后,如何构造查询呢?
      

  4.   

    desc tablename 找到表结构insert into tablename b(b.A,b.B..)
    select a.A,a.B,a...
    from tablename a 对应的字段数据插入就可以了
      

  5.   

    OracleDBA群35903017,欢迎加入。
      

  6.   

    我有个思路。。先建个游标将目的表的字段取出来放在一个变量里。然后在另外一个在目的表取数据的游标中的SQL里放入该变量。。不知道行不行。
      

  7.   

    create or replace procedure pro_get_data(in_table_name in varchar2,in_col_name in varchar2) is 
    v_sql varchar2(2000);
    v_field varchar2(50);
    v_flag number(1);
    begin
       ----- 构造查询语句 ---------
       v_sql:='select ';
       v_flag:=0;
       for x in (select column_name from user_tab_cols where table_name=upper(in_table_name) and column_name<>upper(in_col_name))
       loop
          v_field:=x.column_name;
          if v_flag=0 then
             v_sql:=v_sql||v_field;
             v_flag:=1;
          else
             v_sql:=v_sql||','||v_field;
          end if;
       end loop;
       v_sql:=v_sql||' from '||in_table_name;
       dbms_output.put_line(v_sql);
    end;
    /