web-dev-qa-db-ja.com

PLSQL選択の結果を反復処理する方法

Oracleデータベースの特定の列にある特定の値の発生数を検索しようとしています。この列は数十のテーブルで使用されており、クエリを何度も実行する必要があるため、各テーブルを個別にクエリしたくありません。私は次のようなもので検索するテーブルのリストを取得できます:

Select table_name from all_tab_cols
   join all_tables using (table_name)
   where column_name = 'EmployeeId' and num_rows > 0

次の手順では、テーブル名のリストを反復処理し、特定の値を含む各テーブルをEmployeeId列に出力します。たとえば、出力は次のようになります。

**Table Name   Column_name   # Rows for EmployeeId = '123456'**
Table 1        EmployeeId                    1
Table 2        EmployeeId                   12
etc.

私は開発者ではないので、SQLスクリプトでカーソルを使用した経験がないので、助けていただければ幸いです。

6
1earldog

CURSOR FOR LOOP

おそらく以下のようになります(試していない)。

BEGIN
FOR item IN
(Select table_name,column_name,num_rows  from all_tab_cols
   join all_tables using (table_name)
   where column_name = 'EmployeeId' and num_rows > 0)
LOOP
DBMS_OUTPUT.PUT_LINE
(item.table_name || '    ' || item.column_name ||'    '||item.num_rows);
END LOOP;
END;
7
Pavan Chandaka