获取SQR中select返回的记录数

时间:2018-03-09 16:39:11

标签: oracle sqr

我有一个SQR Begin-Select语句SELECTS一堆数据并返回它以处理SQR报告。 Begin-Select有可能不会返回任何内容,因此这意味着无需报告任何内容。

我如何检查Begin-Select是否在其中没有返回任何行的声明?

我考虑在COUNT(*)中添加Begin-Select,但我不想GROUP BY任何事情。这是Begin-Select的样子。

Begin-Select On-Error=Global-Got-Fatal-SQL-Error
B.InvrExtAcctNbr        &InvrLoanNbr
A.AcctNbr               &AcctNbr
C.RtxnNbr               &AcctGrpNbr

    !- Process each record
    #Debug Show 'Processing AcctNbr: ' &AcctNbr
    !Do Process-Record
    #Debug Show 'Processed AcctNbr: ' &AcctNbr

 FROM FooBar    A,
       JohnDoe  B,
       SQRNoob  C
 WHERE A.QueNbr = $QueNbr /* 123 */
      AND A.QueSubNbr = $QueSubNbr /* 456 */
      AND A.ApplNbr = $ApplNbr /* 789 */
        AND A.AcctNbr = C.AcctNbr
        AND A.RtxnNbr = B.AcctGrpNbr
 ORDER BY A.AcctNbr
End-Select

我想检查Begin-Select是否有任何回复。我试过这个:

Begin-Select On-Error=Global-Got-Fatal-SQL-Error
COUNT(A.AcctNbr)        &TotalRows
B.InvrExtAcctNbr        &InvrLoanNbr
A.AcctNbr               &AcctNbr
C.RtxnNbr               &AcctGrpNbr
...

但我不想在发言结束时使用GROUP BY条款。我也不想把它分成两个单独的SELECT陈述。一个用于实际选择数据,另一个用于COUNT(A.AcctNbr)

是否有其他方法可以获取从此SELECT语句返回的行数。

我的整个问题是,如果没有行返回,我不必处理表单。所以实际上我只需要检查Begin-Select是否返回一行或多行行。如果它返回没有行,那么我将停止处理SQR。

1 个答案:

答案 0 :(得分:1)

蛮力方法:

Let #Count = 0
Begin-Select
Variables
   add 1 to #Count
From etc
End-Select
If #Count = 0

我能想到的最简单的方法 - 我尝试了#SQL-COUNT,但这只适用于Insert,Delete和Update语句,而不是select。