--//出力表示
SET SERVEROUT ON;
DECLARE
--//変数定義
type cursor_type is ref cursor;
cur_search cursor_type;
vCount INTEGER;
ERR_CODE NUMBER;
ERR_MSG VARCHAR2(255);
TYPE objName IS VARRAY(260) OF VARCHAR2(30);
--//対象データを指定
tDATE objName := objName('')
BEGIN
--//テーブルを指定する(全テーブルの中から特定の文字列が含まれるテーブルを指定)
FOR vRec (SELECT table_name,column_name FROM user_tab_cols WHERE table_name LIKE '' OR table_name = '')
LOOP
BEGIN
--//指定したテーブルの中から対象データを検索
FOR i IN tDATA.first..tDATA.last LOOP
OPEN cur_search FOR 'SELECT COUNT(*) AS cnt FROM ' || vRec.column_name || 'LIKE ''%' || tDATA(i) || '%''';
FETCH cur_search INTO vCount;
IF vCount > 0 THEN
--//対象データがあった場合、そのテーブルと項目名、件数を出力する
DBMS_OUTPUT.PUT_LINE( tDATA(i) || ':' || vRec.table_name || '.' || vRec.column_name || ' ' || vCount || '件あり' );
END IF;
CLOSE cur_search;
END LOOP;
EXCEPTION
--//例外処理
WHEN OTHERS THEN
ERR_CODE := SQLCODE;
ERR_MSG := SUBSTEB(SQLERRM,1,255);
DBMS_OUTPUT.PUT_LINE('error:' || ERR_CODE || ' ' || ERR_MSG || ' ' || vRec.table_name || '.' || vRec.column_name );
END;
END LOOP;
END;
/
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント