× 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.



I'm late to the party and I have not read "all" the emails in the string so
if this is just repeating a suggestion, forgive me.

My initial reaction from your initial email and source code is there
should not be a problem. However, IF the string in the variable (values
that the LIKE is comparing against for example) changes in any way, then
the cursor would have to be closed and reopened. The example I've
experienced is as follows: We do not use journaling because of space
restrictions, thus the only way to "lock" a row is to create a cursor and
"fetch for update". Since I needed to "lock" one specific row at a time,
my "Select" statement includes a "for update of" clause. I created a
script with "?" so I can pass a host variable, Declared the cursor,
Prepared the statement, and "Open cursor Using :parm". The FETCH statement
then locks the row, then I have to either UPDATE or CLOSE the cursor to
free up the lock. To get the next row, I have to Close Cursor, change the
parm value, and Open cursor using :parm (with it new value). If I tried to
just change parm without closing and opening the Curson with the new vlaue,
the Fetch returned EOD, like you are getting. No idea if you are doing
something similar, but thought I would pass along my experience in case it
helps. Good Luck.



On Thu, Dec 12, 2019 at 10:49 AM Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:

Marvin,

Since you have a small program that exhibits this behaviour why not post
the whole source, plus the statements to create the table and let us try it
on our own systems?

The only thing I can think of if all that you say is true is that you
perhaps have a missing PTF. I do remember one instance a while back when
there was an issue with embedded SQL but it was quite a long time ago.


On Dec 12, 2019, at 9:06 AM, Marvin Radding <
marvin.radding@xxxxxxxxxxxxxxxxxxxxx> wrote:

I debug the program and step by step watch it execute. The prepare
statement has no errors. The Open has no errors. But the fetch fails to
find the record I know it should. I copy/paste the sql statement into
STRSQL and it finds the record. I don't understand why the two are behaving
different.

Thanks,

Marvin
No trees were killed in the sending of this message, but a large number
of electrons were terribly inconvenienced, traumatized, triggered, and
crying for their safe spaces.

-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxxxxxxxx] On Behalf
Of smith5646midrange@xxxxxxxxx
Sent: Wednesday, December 11, 2019 5:59 PM
To: 'RPG programming on IBM i' <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: RE: A problem in embedded SQL

There are a lot of responses to this that I didn't read and if someone
has already mentioned this, I apologize for the repeat. I have seen this
same weirdness when I forgot to close the cursor on a previous run but I
don't remember any specifics like if I was in debug or anything like that.
I also don't remember if the prepare or open failed, only that I got the
SQLCOD =
100 on the fetch and I knew the data was there. When I logged off and
back on and got my data on the next run.

-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of
Marvin Radding
Sent: Tuesday, December 10, 2019 6:47 PM
To: 'RPG programming on IBM i' <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: A problem in embedded SQL

I am working on a program that is supposed to return a data element when
the user requests it is using two parameters.

The problem is in the RPGLE (running under 7.1) the sql statement
returns EndOfData when I attempt to use the program with parameter that I
know is there. But if I take the sql statement and use interactive sql, it
works and selects the correct record.

I don't understand what the difference is between the two methods.

The sql statement is:

SELECT ipol#
FROM commcmtp
join commitmp on ccomp=icomp
and ipol# = cpol#
and cseq = iseq
and iccode like 'EAPP%'
and crecid = 1
and ccomm like '%81925B%'

In the RPGLE, it is a prepared statement that is okayed by the prepare
statement. It is okayed by the open statement. But the fetch statement
returns EndOfData.

Taking the same sql statement and executing it in interactive sql, it
works properly and returns the expected data element.

Can anyone give me a clue why it doesn't work in RPGLE?

Marvin

Notice: This e-mail transmission may contain information that is
proprietary, privileged and/or confidential and is intended exclusively for
the person(s) to whom it is addressed. This message may also contain
Protected Health Information (PHI) and must be treated confidentially and
handled in accordance with HIPAA and other federal and state privacy laws.
Any use, copying, retention or disclosure by any person other than the
intended recipient or the intended recipient's designees is strictly
prohibited. If you are not the intended recipient or their designee, please
notify the sender immediately and delete this e-mail (and any accompanying
attachments).
--
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@xxxxxxxxxxxx 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@xxxxxxxxxxxx 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@xxxxxxxxxxxx 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@xxxxxxxxxxxx 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.