Курсорами не пользовался практически. Было гдето одно или 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