Boltik Evgeny wrote:
for select CODED049n, CODED206n, CODED040n, CODED016n, CODED050n from d048 D, ALTNAMES A where A.CodeD049 = D.CodeD049 and A.CodeD206 = D.CodeD206 and A.CodeD040 = D.CodeD040 and A.CodeD016 = D.CodeD016 and ((A.CodeD050 = D.CodeD050) or (A.CodeD050 = '' and D.CodeD050 is null)) INTO CODED049n, CODED206n, CODED040n, CODED016n, CODED050n AS CURSOR TMPCURSOR do begin if (CODED050n = '') then CODED050n = null; update d048 set CodeD049 = :CodeD049n, CodeD206 = :CodeD206n, CodeD040 = :CodeD040n, CodeD016 = :CodeD016n, CodeD050 = :CodeD050n where CURRENT OF TMPCURSOR; suspend; end
Обычный (без DISTINCT / GROUP BY) внутренний джойн курсорам не мешает. Единственный нюанс это если джойн будет left и апдейтиться будет внутренняя таблица -- тогда возможны сюрпризы на отсутствующих записях. Что, в принципе, вполне логично :-)
-- Дмитрий Еманов