在 pl/sql 中计算游标的行数

2024-03-11

我正在尝试计算将从 sql 语句返回的行数。该语句位于游标中

我的代码是这样的

DECLARE

v_counter int := 0 ;

select count(*) into v_counter from (
cursor get_sth is select * from table1 where condit..) ;


BEGIN

DBMS_OUTPUT.PUT_LINE (v_counter);


END ;
/

但它不起作用

有没有其他解决方案可以让我计算游标结果的行数,我真的是菜鸟

感谢帮助者


如果您的目标是重用现有游标定义并且不必重复它所基于的查询,则可以循环其结果来获取计数:

set serveroutput on
declare
  v_counter pls_integer := 0;
  cursor get_sth is select * from all_tables where owner = user; -- your query
begin
  for sth in get_sth loop
    v_counter := v_counter + 1;
  end loop;
  dbms_output.put_line (v_counter);
end;
/

如果不获取结果集中的行,则无法对其进行计数,游标循环会执行此操作。 (@MarcinWroblewski 展示了另一种方法,即显式获取)。无论哪种方式,游标都会被进程消耗。如果您想对返回的数据执行任何操作after计算它你必须重新执行并重新获取光标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pl/sql 中计算游标的行数 的相关文章

随机推荐