×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Thanks Chuck. The SQL0204 error is what I've seen in my testing if the file
does not exist.

Other than invoking a CHKOBJ from the program, I just wasn't sure if there
were a simple way with minimal overhead instead of forcing an error.

If it doesn't exist, the program just exits - no harm/no foul in this
situation. Realistically, the range of retro-active updates should pretty
much guarantee that a non-existence would be a rarity - maybe not worth the
worry - other than trapping the error and allowing a graceful exit.


Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power



-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of
CRPence
Sent: Monday, November 02, 2015 6:39 PM
To: midrange-l@xxxxxxxxxxxx
Subject: Re: SQL Check If File Exists (via RPG)

On 02-Nov-2015 17:48 -0600, Roger Harman wrote:
I have a situation where I need to update/add/delete records in a
historical snapshot file (or files) if the current live file is
changed (retro-active changes).

The historical files are named by year/month and may or may not exist
for a selected record.

Looking for suggestions on the quickest easiest way to verify a file's
existence. This will be in a trigger program.

Normally the DML [UPDATE, DELETE, or INSERT] statement would just fail
with the -204 [SQL0204]; the coded response would be either to ignore that
failure, or to invoke the processing to CREATE the missing TABLE and then
retry the request. In an SQL TRIGGER, a CONTINUE HANDLER for the sqlstate
that correlates to the -204 normally would be used to deal with that issue.

The sqlcode -204 [SQL0204] on a DESCRIBE TABLE is what I recall as
typically being done to test explicitly for existence, *outside of* whatever
processing really needs to be done; e.g. instead of allowing the
UPDATE\INSERT\DELETE DML requests to fail with the -204. If using the
DESCRIBE, then the attributes of the columns also can be verified to match
what is required, additionally, when that request is successful vs failed
per -204.

Or a CREATE TABLE can be issued, if that is going to be the response
anyhow, to the missing TABLE; i.e. the sqlcode -601 [SQL0601] for that
CREATE request [to be clear, *not* using the OR REPLACE syntax] indicates
that the DML should not fail also with the -204. So the table is created if
not there, and the -601 is just ignored when the table is there.

There is also the possibility for use of a PREPARE of a SELECT statement
referring to that table in a table-reference. If the TABLE is very
/complex/ then a prepared statement defining a query that does not require
an effective DESCRIBE, such as a 'SELECT COUNT(*) FROM TABLE_NAME' [for
which no columns are referenced] could outperform the DESCRIBE, even though
the groundwork for a DESCRIBE is being done for that PREPARE anyhow; just no
copying of the data for the record format into the SQL area as the effect of
that DESCRIBE-like work.

Yet, if the DML statements are dynamic due to the /variable/ file-naming,
then those DML statements can serve the same purpose; i.e.
the PREPARE of the INSERT, UPDATE, or DELETE would give the -204 error, just
as would a SELECT statement.

--
Regards, Chuck

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at http://archive.midrange.com/midrange-l.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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

This mailing list archive is Copyright 1997-2026 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.