PLSQL-迭代动态选择结果

PLSQL-迭代动态选择结果,plsql,dynamic-sql,Plsql,Dynamic Sql,免责声明:我非常不擅长PLSQL(也不擅长SQL),这对一些人来说可能是显而易见的 我正在做一个叫做打印直方图的程序: create or replace procedure print_histogram ( p_owner VARCHAR, p_table VARCHAR, p_col VARCHAR ) as 我必须知道每个值包含在p_所有者的p_表的p_列中的次数。 示例: 左侧显示此列中的特定值,右侧显示其相对频率 SQL A: Below 30,000 -->

免责声明:我非常不擅长PLSQL(也不擅长SQL),这对一些人来说可能是显而易见的

我正在做一个叫做打印直方图的程序:

create or replace procedure print_histogram
    ( p_owner VARCHAR, p_table VARCHAR, p_col VARCHAR )
as
我必须知道每个值包含在p_所有者的p_表的p_列中的次数。
示例:
左侧显示此列中的特定值,右侧显示其相对频率

SQL
A: Below 30,000      --> *************
B: 30,000 - 49,999   --> **************
C: 50,000 - 69,999   --> *********************
D: 70,000 - 89,999   --> *************************
E: 90,000 - 109,999  --> **************************************
F: 110,000 - 129,999 --> ***************************************************
G: 130,000 - 149,999 --> **************************
H: 150,000 - 169,999 --> **************************
I: 170,000 - 189,999 --> **********************
J: 190,000 - 249,999 --> ***************
K: 250,000 - 299,999 --> **********
L: 300,000 and above --> ********
我正在使用动态选择来获取此列的内容:

execute immediate 'select ' || p_col || ' from ' || p_owner|| '.' ||p_table 
into column_data;
这确实有效,但我真的不明白我现在如何遍历结果。我尝试将
column\u data
设置为
varchar2
,但由于该数据的大小限制仅为32k,因此可能会出现列的行数超过该值的情况,而且它似乎不是很健壮。我还尝试将动态选择放入光标,但这是不允许的。
我应该如何存储此查询的结果以使其可编辑?

我找到了一个解决方案。这也适用于我的问题。