0

重複の可能性:
すべてのテーブルのすべてのフィールドで特定の値
を検索(Oracle)Oracleのスキーマ全体のすべてのフィールドで特定の文字列を検索します

私はこれを持っています:

select * from 
{select table_name
from user_tab_columns
where data_type = 'VARCHAR2')

しかし、もちろん、それは機能していません。SQL Developerのみを使用しており、続行する方法がわかりません。

上記のクエリで各テーブルからすべてを選択するように求めていると思いましたが、それは正しくありません。私はSOについていくつかの答えを見ましたが、彼らは助けにはなりませんでした。column_nameだけでなくuser_tab_columns、列の値が必要です

「JONES」という名前がデータベースのどこにあるかを本当に知りたいだけです。テーブルや列はわかりませんが、値がどこかにあるだけです。

ありがとう。

次のコードを実行したとき:

すべてのテーブルのすべてのフィールドで特定の値を検索(Oracle)

 SET SERVEROUTPUT ON SIZE 100000

        DECLARE
          match_count INTEGER;
        BEGIN
          FOR t IN (SELECT owner, table_name, column_name
                      FROM all_tab_columns
                      WHERE owner <> 'SYS' and data_type LIKE '%CHAR%') LOOP

            EXECUTE IMMEDIATE
              'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name ||
              ' WHERE '||t.column_name||' = :1'
              INTO match_count
              USING 'JONES%';

            IF match_count > 0 THEN
              dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count );
            END IF;

          END LOOP;

        END;
        /

私が受け取った:

Error report:
ORA-00920: invalid relational operator
ORA-06512: at line 8
00920. 00000 -  "invalid relational operator"
*Cause:    
*Action:

<>編集:何らかの理由で、オラクルは同様に試みられた等しくないことを好みません!=

編集:私がちょうど実行する場合:

SELECT owner, table_name, column_name
                      FROM all_tab_columns
                      WHERE owner != 'SYS' and data_type LIKE '%CHAR%'

エラーは発生しません。

なしで実行するとowner != 'SYS'、特権が不十分になります(ただし、dbを所有しています)

実行を削除し、またはowner != 'SYS'で元に戻し、失敗します!=<>

編集:CONNECT BY現時点で試してみてください

4

0 に答える 0