select table_name from user_tab_cols where column_name='test';
这样查出某用户所有tabel里有test列的tabel!
但我很多个tabel里都有test这个列,我要查出所有tabel里test列的某一条数据,和在那一个tabel,具体怎么写???

解决方案 »

  1.   

    需要写PL/SQL程序了,而且要使用到动态SQL。因为表的名字是变化的。
      

  2.   

        你这里的某一条是什么意思? 每个table的该test列的数据个数都不一样
      
    如果你是要查全部,可以用
    sqlTest:= 'select test from :1'
    exec immediate sqlText using tablename 
    当然需要你去循环tablename。就是你提到的'tabel'
    这里提供解决办法 PS   楼主你的语文是英文老师教的,英文是语文老师交的么??      tabel != table     和在那一个tabel  应该是  在哪一个table吧
      

  3.   

    这么说吧:
    一个数据库里,我想查列USN:12345具体在哪些table_name里!
    select table_name from user_tab_cols where column_name='usn';
    这样就查出所有table_name里有usn列的表!
    table_name数据如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .
    .
    有上百个table_name里有USN的列,
    想通过一条查询语句,分别列出哪些table_name里的USN列有12345这条数据,不还意思..表达不明
      

  4.   

     declare 
    sqlText varchar2(100);
    countNum number;
    type tableNameType is table of varchar2(100) index by binary_integer;
    tableName tableNameType;
    begin 
    select distinct table_name bulk collect into tableName from user_tab_cols where column_name='USA';
    dbms_output.put_line(tableName.count());
    for v_index in 1..tableName.count() loop
    sqlText:= 'select count(*) from ' ||tableName(v_index)|| ' where usa=to_char(2)';
    execute immediate sqlText into countNum  ;
    if(countNum>0) then
    dbms_output.put_line(tableName(v_index));
    end if ;
    end loop;
    end;在plsql或者toad直接使用即可 改成存储过程也比较容易
      

  5.   

      将USA 换成 你需要的 USN 将usa=to_char(2) 换成 你的 USN=12345 即可 
      

  6.   

    -- Created on 2012/2/15 by ADMINISTRATOR 
    Declare
      colnm Constant Varchar2(10) := 'VEHICLE_ID'; --你要找的字段名
      colv     Varchar2(20) := '82'; --你要找的值
      isExists Integer;
    Begin
      For r_up In (Select table_name From user_tab_cols Where column_name = colnm) Loop
        Execute Immediate 'select case when exists (select ' || colnm || ' from ' ||
                          r_up.table_name ||
                          ') then 1 else 0 end isExists from dual'
          Into isExists;
        If isExists = 1 Then
          --输出所有符合条件的表
          dbms_output.put_line(r_up.table_name);
        End If;
      End Loop;
    End;
      

  7.   

    -- Created on 2012/2/15 by ADMINISTRATOR 
    Declare
      colnm Constant Varchar2(10) := 'VEHICLE_ID'; --你要找的字段名
      colv     Varchar2(20) := '82'; --你要找的值
      isExists Integer;
    Begin
      For r_up In (Select table_name From user_tab_cols Where column_name = colnm) Loop
        Execute Immediate 'select case when exists (select ' || colnm || ' from ' ||
                          r_up.table_name ||
                          ') then 1 else 0 end isExists from dual'
          Into isExists;
        If isExists = 1 Then
          --输出所有符合条件的表
          dbms_output.put_line(r_up.table_name);
        End If;
      End Loop;
    End;