× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Well it looks to me as if you re restricting the result set size yourself by using offset and fetch first. So I would expect the row count to reflect that.



On Jul 29, 2020, at 3:31 AM, Maria Lucia Stoppa <mlstoppa@xxxxxxxxx> wrote:

@Birgitta
Thank you for answering.
I don't know what to say.

This is the piece of code:
exec SQL
declare cur_wab cursor for
select
...
order by wab.WPCPRPR
offset :wOffset rows
fetch first :wRowsToRead rows only
;

exec sql open cur_wab;
exec sql get diagnostics :wTotalRows = DB2_NUMBER_ROWS;
dow 1 = 1;
reset dsContatto;
monitor;
exec sql fetch cur_wab into :dsContatto;
on-error;

before dow instruction, debug shows:
WTOTALROWS = 0000000000000000000000000000050.
WOFFSET = 0
WROWSTOREAD = 50

Whereas the result set number of rows equals to 994.
To me, it seems that DB2_NUMBER_ROWS shows the number of fetched rows, just
like ROW_COUNT, maybe due to the presence of offset and fetch first clauses.

Or, am I doing something wrong?







Il giorno mer 29 lug 2020 alle ore 07:37 Birgitta Hauser <
Hauser@xxxxxxxxxxxxxxx> ha scritto:

It is GET DIAGNOSTICS, but you may have a look at the DB2_NUMBER_ROWS key
word and check it directly after the OPEN Statement.
Here an excerpt from the documentation

DB2_NUMBER_ROWS
If the previous SQL statement was an OPEN or a FETCH which caused the size
of the result table to be known, returns the number of rows in the result
table. For SENSITIVE cursors, this value can be thought of as an
approximation since rows inserted and deleted will affect the next
retrieval
of this value. Otherwise, the value zero is returned.

Mit freundlichen Grüßen / Best regards

Birgitta Hauser


"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
„Train people well enough so they can leave, treat them well enough so they
don't want to.“ (Richard Branson)


-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Maria
Lucia Stoppa
Sent: Dienstag, 28. Juli 2020 14:23
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: Can an SQL common table expression be used for many different
selects?

@Jon
I already use GET DIAGNOSTICS, which @Vernon very well clarified, to know
the number of rows in the result set; but in this specific case, as the
article said towards the end, it seems that GET DIAGNOSTICS returns the
number of fetched rows, which may be affected by offset and rows only,
instead of the total number of rows of the result set.

GET DIAGNOSTICS is well explained in "Database Db2 for i SQL Reference",
but
I can't really see if any of the other allowed information will answer this
question, at least.

Thank you all

Il giorno mar 28 lug 2020 alle ore 14:12 Vernon Hamberg <
vhamberg@xxxxxxxxxxxxxxx> ha scritto:

Hi all, to clarify -

GET DIAGNOSTICS is not an API call - it is an SQL statement, as this
info from the 7.1 reference says -
The GET DIAGNOSTICS statement obtains information about the previous
SQL statement that was executed.
And this further from the documentation -
Instead of using an SQLCA, the GET DIAGNOSTICS statement can be used
in all languages to return return codes and other information about
the previous SQL statement.
GET DIAGNOSTICS was available sometime after V5R1 (I still have that
reference manual) and before V6R1.

In SQLCA there are a set of 6 integer variables (SQLER1 - SQLER6) that
return diagnostic information. For different statements each integer
can have different meaning.

On 7/28/2020 5:11 AM, Patrik Schindler wrote:
Hello Maria,

Am 28.07.2020 um 11:56 schrieb Maria Lucia Stoppa <mlstoppa@xxxxxxxxx
:

I'm already reading the SQL technical reference, you might be
referring
to GET DIAGNOSTICS, but I haven't found anything interesting yet. I'll
keep on studying.
I was referring to the manual about using SQL in HLLs. AFAIR,
there's
one or more DS' documented which give you access to a lot of internal
variables, like SQLCOD and the like. GET DIAG sounds more like an API
call.

The results may not be the same due to the filtering process. The
result set is the same for 8 to 10 different select statements within
the same run though, that's why I hoped the same "with" table could be
used for all of them. Maybe, a global temporary table is of help, or a
view to the database already grouped by.
I guess, this is too abstract for me to come up with a solution.
Maybe
Birgitta can help. Or you need to provide actual examples. But even
then, I don't know if my skills are sufficient.

:wq! PoC

PGP-Key: DDD3 4ABF 6413 38DE - https://www.pocnet.net/poc-key.asc


--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com



--

Maria Lucia Stoppa
mlstoppa@xxxxxxxxx
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or
change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link:
https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com



--

Maria Lucia Stoppa
mlstoppa@xxxxxxxxx
--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.