Курсорами не пользовался практически. Было гдето одно или 2 места ито с 
одной таблицей. А тут с пылу с жару написаль такое запустил отработало. Но 
потом подумалось, а ведь я использовал 2 таблицы. Вот теперь гложат 
сомнения, а вдруг глюк и потом уберут возможность или все нормаль, и 
работать будет всегда и правильно. С точки зрения логики вроде все 
нормально.

  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


Ответить