尝试从两列中提取多条记录时,精确提取返回的行数超过了请求的行数
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
值可能与表中的实际行数几乎没有关系,并且它极不可能是当前正确的值。
【讨论】:
以上是关于尝试从两列中提取多条记录时,精确提取返回的行数超过了请求的行数的主要内容,如果未能解决你的问题,请参考以下文章
当我已经使用游标时,为啥我得到“精确提取返回的行数超过请求的行数”?
获取 ORA-01422 的原因:精确提取返回的行数超过了请求的行数
Oracle - ORA-01422:精确提取返回的行数超过了请求的行数