\$\begingroup\$
\$\endgroup\$
1
I have written below SQL in an RPGLE program. Intent is to update the header file (TC400F) if no corresponding records exist in detail file (TC401F). Are there better ways of doing this?
Exec SQL UPDATE TC400F
SET T40STS = '05',
T40OFL = '1'
WHERE T40SID = :K#T41SID AND
T40PID = :K#T41PID AND
NOT EXISTS (SELECT * FROM TC401F WHERE
T41SID = :K#T41SID AND
T41PID = :K#T41PID );
jmarkmurphy
2604 silver badges12 bronze badges
asked Aug 16, 2017 at 16:23
1 Answer 1
\$\begingroup\$
\$\endgroup\$
2
Not really but you can simplify your query like this (variable are not replaced 2x)
Exec SQL UPDATE TC400F f1
SET (f1.T40STS, f1.T40OFL) = ('05', '1')
WHERE (f1.T40SID, f1.T40PID) = (:K#T41SID, :K#T41PID) AND
NOT EXISTS
(SELECT * FROM TC401F f2 WHERE (f1.T40SID, f1.T40PID)=(f2.T41SID, f2.T41PID));
-
1\$\begingroup\$ Did you mean
(f2.T40SID, f2.T40PID)
or(f2.T41SID, f2.T41PID)
in the subselect? \$\endgroup\$jmarkmurphy– jmarkmurphy2017年10月30日 14:17:54 +00:00Commented Oct 30, 2017 at 14:17 -
\$\begingroup\$ i have change my query, ty \$\endgroup\$Esperento57– Esperento572017年10月30日 14:58:56 +00:00Commented Oct 30, 2017 at 14:58
lang-sql
MERGE
? ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/sqlp/… \$\endgroup\$