PL/SQL 游标行

PL/SQL Cursor rows

我有一个问题,希望能找到可以帮助我的人: 我想将游标返回的所有行计算到 'IF' 中(不使用计数器,因为我想在开始处理之前一次性知道行数。

解释更多:我有一个包含测量值的 table,我想知道测试(我的 IF 中的代码)returns 是否有很多测量值。如果它 returns 一个我想发送一条消息,否则我发送一条包含很多测量值的消息。 谢谢

看来您需要使用 SQL%ROWCOUNT。 查看 https://docs.oracle.com/cloud/latest/db112/LNPLS/static.htm#CIHJJJDG 了解更多信息。

我认为这将取决于您所说的 'a lot' 测量值的含义。尼尔斯曼的方法会给你你想要的答案。但是,如果您确实需要数据,则必须再次执行游标。

我可以想到两种可能会给你想要的答案的方法

  1. 使用 BULK COLLECT 打开光标。然后,您可以对提取到的集合使用 COUNT 方法。但是通常我们会将一次收集的行数限制为最多几百行。如果您对 'a lot' 的定义大于几百,那么这种方法可能效率不高
  2. 使用解析函数 COUNT(*)OVER() return 与查询的每一行内联的所有记录的计数。这意味着在第一次获取之后,您将知道整个结果集的大小