尝试从两列中提取多条记录时,精确提取返回的行数超过了请求的行数

Posted

技术标签:

【中文标题】尝试从两列中提取多条记录时,精确提取返回的行数超过了请求的行数【英文标题】:Exact fetch returns more than requested number of rows when trying to fetch multiple records from two columns 【发布时间】:2014-01-22 18:47:04 【问题描述】:

我正在编写一个程序来输出 user_tables 中的所有 table_name 和 num_rows。 但是我得到的准确提取返回超过了请求的行数。欢迎任何提示或建议。

create or replace procedure output_table
as
v_table_name varchar2(20);
v_num_rows number;

begin
select table_name, num_rows 
into v_table_name, v_num_rows
from user_tables;

dbms_output.put_line('Table '||v_table_name||' has '||v_num_rows||' of rows ');
end;
/

execute output_table;
/

【问题讨论】:

【参考方案1】:

你可能想要一个循环

BEGIN
  FOR t IN (SELECT table_name, num_rows
              FROM user_tables)
  LOOP
    dbms_output.put_line( 'Table ' || t.table_name || 
                          ' has ' || t.num_rows || ' rows.' );
  END LOOP;
END;

我希望您理解user_tables 中的num_rows 值可能与表中的实际行数几乎没有关系,并且它极不可能是当前正确的值。

【讨论】:

以上是关于尝试从两列中提取多条记录时,精确提取返回的行数超过了请求的行数的主要内容,如果未能解决你的问题,请参考以下文章

当我已经使用游标时,为啥我得到“精确提取返回的行数超过请求的行数”?

PL/SQL - 精确提取返回超过请求的行数

获取 ORA-01422 的原因:精确提取返回的行数超过了请求的行数

Oracle - ORA-01422:精确提取返回的行数超过了请求的行数

PL/SQL ORA-01422:精确提取返回的行数超过了请求的行数

需要 ORA-01422 的解决方案:精确提取返回的行数超过请求的行数