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 и апдейтиться будет внутренняя таблица -- тогда возможны сюрпризы на отсутствующих записях. Что, в принципе, вполне логично :-)


--
Дмитрий Еманов

Reply via email to