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

Oracle 11gで列名を使用してストアドプロシージャの名前を見つける方法

    確実な方法はありませんが、 regexp_like を使用して user/all/dba_source を検索できます 単語全体をチェックし、それを user/all/dba_dependencies と相互参照して、チェックするパッケージのリストを絞り込みます。

    select s.name, s.type, s.line, s.text
    from   user_source s
    where  ltrim(s.text,chr(9)||' ') not like '--%'
    and    regexp_like(lower(s.text),'\Wyour_column_name_here\W')
    and    (s.name, s.type) in
           ( select d.name, d.type
             from   user_dependencies d
             where  d.referenced_owner = user
             and    d.referenced_name = 'YOUR_TABLE_NAME_HERE' );
    

    または、他のスキーマからの参照がある可能性がある場合、

    select s.owner, s.name, s.type, s.line, s.text
    from   all_source s
    where  ltrim(s.text,chr(9)||' ') not like '--%'
    and    regexp_like(lower(s.text),'\Wyour_column_name_here\W')
    and    (s.owner, s.name, s.type) in
           ( select d.owner, d.name, d.type
             from   all_dependencies d
             where  d.referenced_owner = user
             and    d.referenced_name = 'YOUR_TABLE_NAME_HERE' );
    

    select distinct s.owner, s.name, s.type ... だけを使用するようにすることもできます。 調査するオブジェクトのリストを取得します。




    1. Golang、mysql:エラー1040:接続が多すぎます

    2. mysqldumpによって二重にエンコードされたデータベースを復元する方法

    3. ユーザーrootでlocalhost:3306でMySQLに接続できませんでした

    4. MySQLの条件付き並べ替え?