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

我正在尝试计算将从 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 展示了另一种方法,使用显式获取)。无论哪种方式,游标都会被进程消耗。如果您想在计数后对返回的数据做任何事情,您必须重新执行并重新获取游标。

https://stackoverflow.com/questions/38845510/

相关文章:

python - Flask:重定向(url_for())返回html但不加载页面

haskell - 让 Multiline haskell 函数在 ghci 中工作

php - 如何使用php将html代码转换为png图像

amazon-web-services - 将记录写入 Aurora 数据库实例时触发 AWS La

elixir - 为什么 is_atom(nil) 在 elixir 中等于 true?

java - 如何确定一个数字中的所有设置位是否也在另一个数字中设置?

module - 如何导入本地模块?

maven - 缺少神器 soapui :SoapUI:jar:5. 2.1

python - 如何从递归 Python 函数返回值?

r - 按组移动 data.table 中的一列列表