【问题标题】:How to count number of results rows plsql如何计算结果行数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' 文档的一部分。

标签: sql oracle sqlplus


【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多