如何计算结果行数plsql

Posted

技术标签:

【中文标题】如何计算结果行数plsql【英文标题】:How to count number of results rows plsql 【发布时间】:2019-11-25 13:54:38 【问题描述】:

我在 PL SQL 中创建了这个查询,我必须检查一个操作需要多少时间。

set line 2222
set pages 0
set feedback off
col EVENT for a35
col SQL_ID for a13
col ET for 9999
col mymac for a15
col username for a12
SELECT MAX(a.last_call_et)
FROM gv\\$session a, gv\\$sqlarea c
where c.address= a.sql_address
and c.hash_value = a.sql_hash_value
and a.username='XXXX'
and a.last_call_et>600 
order by a.last_call_et;

我想修改这个查询,以显示我从结果中获得了多少行。例如,如果我的查询结果将有两行,我想显示'2'

【问题讨论】:

作为一个侧面观察,您展示的是一个简单的 SQL 语句,以及一些 sqlplus 命令。看不到一针 PL/SQL。 '$' 之前的反斜杠转义字符表明这实际上是 shell 脚本中的 'here' 文档的一部分。 【参考方案1】:

我认为您可以将count 聚合函数与现有的max 聚合函数一起使用,如下所示:

SELECT MAX(a.last_call_et),  
       count(1) as total_rows --<-- this
FROM gv\\$session a, gv\\$sqlarea c
where c.address= a.sql_address
and c.hash_value = a.sql_hash_value
and a.username='XXXX'
and a.last_call_et>600 
-- order by a.last_call_et; this order by is of no use

干杯!!

【讨论】:

【参考方案2】:

因为它是 SQL*Plus,所以它的一点点格式就可以完成这项工作。例如:

SQL> break on report
SQL> compute count of ename on report
SQL>
SQL> select ename from emp where deptno = 10;

ENAME
----------
CLARK
KING
MILLER
----------
         3

SQL>

【讨论】:

以上是关于如何计算结果行数plsql的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 中哪一个更快? COUNT(id) 还是计算结果行? [关闭]

如何在 Postgres 函数中检索多个结果行?

如何正确迭代所有 BigQuery 结果行?

如何将 SQL 查询结果行作为具有不同标题名称的列? [关闭]

Hibernate 查询sql结果行数的几种方法

SQL Query - 在一个结果行中显示连接结果[重复]