Oracle數據庫 如何根據某個字段名的值去查詢存在的表列表


declare
  v_sql  varchar2(1000);
  data_count number;
begin
    -- OWNER是模式名   tablespace_name是表空間
  for cur_table in (select distinct  table_name
                      from ALL_ALL_TABLES WHERE OWNER='NEWJNCJEXT' and tablespace_name='JNCJ') loop
    for cur_column in (select distinct column_name,data_type from all_tab_columns a where a.OWNER='NEWJNCJEXT' and  a.TABLE_NAME = cur_table.table_name) loop
        
            if cur_column.data_type = 'VARCHAR2' then
                 
                 -- SQL 拼接
                 v_sql := 'select count(1) from ' || cur_table.table_name ||
                                 '  where ' || cur_column.column_name || '=''EEB10A60-7117-11DE-8A60-CAAB113F4FFE''';

                    -- 執行SQL
                execute immediate v_sql into data_count;
                if (data_count > 0) then
                    DBMS_OUTPUT.PUT_LINE(v_sql);
                end if;
            end if;
    end loop;
  end loop;
end;

以上SQL是在Oracle 11g下執行的

 

 

關於  DBMS_OUTPUT.PUT_LINE  的輸出方式,你可以參考 https://docs.oracle.com/cd/E11882_01/appdev.112/e25519/controlstatements.htm#LNPLS399 里的一些示例

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM