我正在尝试计算将从 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 ;
/
Run Code Online (Sandbox Code Playgroud)
它不起作用
有没有其他解决方案让我计算游标结果的行数,我真的很菜
感谢帮手
如果您的目标是重用现有的游标定义,而不必重复它所基于的查询,则可以遍历其结果以获取计数:
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;
/
Run Code Online (Sandbox Code Playgroud)
如果不获取结果集中的行数,就无法计算它们,游标循环会这样做。(@MarcinWroblewski 展示了另一种方法,即显式提取)。无论哪种方式,进程都会消耗光标。如果您想在计数后对返回的数据执行任何操作,则必须重新执行并重新获取游标。
| 归档时间: |
|
| 查看次数: |
13638 次 |
| 最近记录: |