确定游标的已访存行的数目

确定与游标相关联的行数可通过使用 cursor_rowCount 标量函数高效完成,它将游标变量用作参数,并返回对应打开该游标后访存的行数的整数值作为输出。

开始之前

必须先满足下列先决条件,才能使用 cursor_rowCount 函数:
  • 必须创建游标数据类型。
  • 必须声明游标数据类型的游标变量。
  • 必须已执行引用该游标的 OPEN 语句。

关于此任务

可在 SQL PL 上下文中使用 cursor_rowCount 函数,每当在过程逻辑中需要访问至今为止对游标访存的行数计数或总访存行数计数时,应执行此任务。使用 cursor_rowCount 函数可简化访问已访存行计数的过程,此过程本来可能需要在循环过程逻辑中使用已声明变量和重复执行语句来维护此计数。

限制

cursor_rowCount 函数只能在 SQL PL 上下文中使用。

过程

  1. 使用对 cursor_rowCount 标量函数的引用来创建 SQL 语句。
    以下是 SET 语句的示例,此示例将 cursor_rowCount 标量函数的输出指定给局部变量 rows_fetched
    SET rows_fetched = CURSOR_ROWCOUNT(curEmp)
  2. 在受支持 SQL PL 上下文中加入包含 cursor_rowCount 函数引用的 SQL 语句。例如,这可能在 CREATE PROCEDURE 语句或 CREATE FUNCTION 语句中并编译该语句。

结果

该语句应成功编译。

示例

以下是包括对 cursor_rowCount 函数的引用的 SQL 过程的示例:

connect to sample %

set serveroutput on %

create or replace procedure rowcount_test()
language sql
begin
  declare rows_fetched bigint;
  declare Designers cursor;
  declare first anchor to employee.firstnme;
  declare last anchor to employee.lastname;
 
  set Designers = cursor for select firstnme, lastname
    from employee where job = 'DESIGNER' order by empno asc;

  open Designers;

  fetch Designers into first, last;
  call dbms_output.put_line(last || ', ' || first);
  fetch Designers into first, last;
  call dbms_output.put_line(last || ', ' || first);

  set rows_fetched = CURSOR_ROWCOUNT(Designers);
  call dbms_output.put_line(rows_fetched || ' rows fetched.');

  close Designers;
end %  

call rowcount_test() %

connect reset %
terminate %

下一步做什么

执行 SQL 过程或调用 SQL 函数。