|
Vern/Marvin/Charles,
I was intrigued by the idea of GET DIAGNOSTICS, but at least for my
current needs, I too tend to favor opening the process with a "select
count(*) into..."
With that, I can wrap the whole "declare cursor", "open cursor", "fetch
into", and "close cursor" in an "if countOfRows > 0" structure, thereby not
executing unnecessary code when there are no array rows to be loaded.
While this particular need does not require trimming nanoseconds, I was
just looking for "best practices" ideas that would enhance my coding, now
and future.
Michael Koester
-----Original Message-----Vernon
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of
Hamberga
Sent: Monday, September 14, 2015 5:18 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: RPG400-L Digest, Vol 14, Issue 336
Marvin
I thought this was an estimate only for the OPEN - much the same as
SQLERRD(3) which is documented like this for the PREPARE -
For the PREPARE statement, contains the estimated number of rows
selected. If the number of rows is greater than 2 147 483 647, then 2
147 483 647 is returned.
There've been other threads about this, and I think it has been said the
only sure way to get row count is SELECT COUNT(*) FROM TABLE
Now I'm very happy to be mistaken here, because I'd love to have the
simple answer from time to time, the SQLERRD(3) answer. Or the GET
DIAGNOSTICS answer - oh, that array element IS updated with the number or
rows retrieved with FETCH - useful for multiple-row fetches.
I do see that the documentation for DB2_NUMBER_ROWS says it IS the number
of rows after an OPEN or FETCH, but with a SENSITIVE cursor it is an
estimate. I see that default for SENSITIVE on a cursor is ASENSITIVE, so
that what you get depends.
Any takers on whether the GET DIAGNOSTICS value is reliable for managing
loop? Under what conditions?and
Regards
Vern
On 9/14/2015 2:43 PM, Marvin Radding wrote:
Mitch,provide the total number of records in the data set after the open. That
There is one method that would be a short cut. GET DIAGNOSTICs can
can control the number of records fetched in the FETCH INTO statement.
http://www.itjungle.com/fhg/fhg052009-story01.html
After the open you can code:
/exec sql
GET DIAGNOSTICS :row_count = DB2_NUMER_ROWS; /end
Marvin
------------------------------
message: 8
date: Mon, 14 Sep 2015 18:17:00 +0000 (UTC)
from: Mitch Gallman <qtemp@xxxxxxx>
subject: Re: Loading arrayDS from sql select into statement?
I've used the following article several times as a reference:
I've never had to do a select count prior to doing the fetch.<mkoester@xxxxxxxxxxxxx> wrote:
Mitch
On Monday, September 14, 2015 1:58 PM, "Koester, Michael"
Charles,
Would be nice if you could use SELECT INTO along with FETCH FIRST XXAfter getting the count (select count(*) into :resultCount from...),
ROWS...
declaring and opening a cursor, I can successfully use
? ? exec sql
? ? fetch MyCursor for :resultCount rows
? ? ? into :ArrayDS;
? ? ? ? ? ? ? ? ? ? ? ?
But there apparently are no shorter shortcuts.
Michael Koester
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.