|
Hi,
You select from ITUNTP07, but define your datastructure over ITUNTP01. This
will only work if both file descriptions are an exact match, i.e. the same
fields with the same definition in the same sequence.
If ITUNTP07 is an DDS described logical file, replace it with the physical
file. Because SQL-Queries based where DDS described logical files are
specified, must be executed by the classic query engine and cannot profit
from the improvements and enhancements of the newer SQL Query Engine.
Contrary the rerouting from SQE to CQE may cost between 10 and 15%
performance.
The query optimizer does not care about the DDS described logical file, i.e.
will take the join information, field selects and the select/omit clauses
rewrite the SQL statement based on the physical file.
To avoid that NULL values are moved into a field where NULL values are not
allowed, just specify the fields you want to change in the DECLARE clause,
as FOR UPDATE OF Fields as follows:
C/EXEC SQL
C+ DECLARE C1 DYNAMIC SCROLL CURSOR FOR SELECT * FROM ITUNTP07 WHERE
C+ URCTRY = 1 and URPGM# = 230 and urclas = 'FF' and URSTAT not in
C+ ('APP','FTC-B','TERM')
C+ For Update Of URPSUS, URSUBS, URSSDT, URNFDT, URCHDT, URCHTI, URCHBY
C/END-EXEC
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!"
-----Ursprüngliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] Im
Auftrag von KJFrey@xxxxxxxxxxxxxxx
Gesendet: Friday, February 09, 2007 16:10
An: rpg400-l@xxxxxxxxxxxx
Betreff: RPGLE SQL Update Cursor problem
I have a program that is using an SQL cursor to retrieve the data I need
to update.
C/EXEC SQL
C+ DECLARE C1 DYNAMIC SCROLL CURSOR FOR SELECT * FROM ITUNTP07 WHERE
C+ URCTRY = 1 and URPGM# = 230 and urclas = 'FF' and URSTAT not in
C+ ('APP','FTC-B','TERM')
C/END-EXEC
The program is retrieving the data and placing into a Host variable like
below
C/EXEC SQL
C+ FETCH NEXT FROM C1 INTO :Unitpolicy
C/END-EXEC
DUnitPolicy E DS EXTNAME(ITUNTP01)
The problem is when I am updating the fields in the data structure I want
to perform an update on the Cursor and I
would like to use WHERE CURRENT OF C1
C/EXEC SQL
C+ UPDATE ITUNTP07 SET URPSUS = :urpsus, URSUBS = :ursubs,
C+ URSSDT = :urssdt, URNFDT = :urnfdt, URCHDT = :urchdt, URCHTI =
C+ :urchti, URCHBY = :urchby WHERE CURRENT OF C1
C/END-EXEC
This does not work....I can't figure out what is wrong......here is the
error messages I am getting
Data mapping error on member ITUNTP07.
Data mapping error on member ITUNTP07.
Data mapping error on member ITUNTP07.
Null values not allowed in column or variable URCTRY.
Cause . . . . . : A data mapping error occurred on field in record
number
0, record format FORMAT0001, member number 1, in member ITUNTP07 file
ITUNTP07 in library ITSDEVFIL, because of error code 20. The error codes
and
their meanings follow:
20 -- A field that is not null capable could not be set to null.
Cause . . . . . : One of the following has occurred:
-- Column URCTRY is a target column in an UPDATE or INSERT statement
for
table ITUNTP07. Either a null value was specified to be
inserted or updated into this column or a value for the column was not
specified in an INSERT statement and the column does not allow null
values.
The null value was specified in the relative entry number 1 in the
VALUES
list, select list, or SET clause.
I am not updating URCTRY.........................I don't understand what
I am doing wrong.
any suggestions would be greatly appreciated.
Ken J Frey
IT Project Leader
Email: KJFrey@xxxxxxxxxxxxxxx
Office: 410-584-0391
Fax: 410-584-0391
Cell: 443-742-0642
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.