sql >> データベース >  >> RDS >> Oracle

すべての列、すべてのテーブルで特定の値を検索します

    コメントを参照してください:

    CLEAR SCREEN
    SET VERIFY OFF
    ACCEPT val CHAR PROMPT 'What value do you want to search for: '
    CLEAR SCREEN;
    
    DECLARE
        match_count                             INTEGER;
        v_search_string                         VARCHAR2(4000) := '&val'; /* this was <<val>> */
    BEGIN
        FOR t IN (SELECT owner,
                         table_name,
                         column_name
                    FROM all_tab_columns
                   WHERE data_type IN ('CHAR',
                                       'VARCHAR2',
                                       'NCHAR',
                                       'NVARCHAR2',
                                       'CLOB',
                                       'NCLOB')) 
        LOOP
            BEGIN
                EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name || ' WHERE ' || t.column_name || ' = :1' INTO match_count USING v_search_string;
    
                IF match_count > 0
                THEN
                    DBMS_OUTPUT.put_line(t.owner || '.' || t.table_name || '     ' || t.column_name || ' ' || match_count);
                END IF;
            EXCEPTION
                WHEN OTHERS
                THEN
                    DBMS_OUTPUT.put_line('Error encountered trying to read ' || t.column_name || ' from ' || t.owner || '.' || t.table_name);
            END;
        END LOOP; 
    END;
    /     
    



    1. MariaDB:「AS」を使用せずに重複する列名を取得できますか?

    2. MySQLのEXPLAINと同等のSQLServer

    3. jdbcの不明なデータベース

    4. 修正方法「関連付けられたパーティション関数は、スキームで言及されているファイルグループよりも多くのパーティションを生成します」SQLServerのメッセージ7707