如何迭代PLSQL Select的结果

时间:2018-04-03 16:52:26

标签: sql loops 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脚本中使用游标的经验,因此非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

尝试使用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;