Дубль. Журнал дубликатов

EXECUTE block
/*
 * Автор Коробка А.А.
 *
 * Ведение журнала учета дубликатов карт
 */
AS
DECLARE pcode TYPE OF COLUMN clients.pcode;
DECLARE verno INTEGER;
DECLARE adddcode TYPE OF COLUMN doctor.dcode;
DECLARE outdcode TYPE OF COLUMN doctor.dcode;
BEGIN
  -- 1. экспорт пациентов - дублей
  FOR SELECT pcode, 0, CASE WHEN c.createdate>current_date-1 THEN uid ELSE NULL END FROM clients c
       WHERE c.cstatus=994045364
  INTO pcode, verno, adddcode do
  BEGIN
    EXECUTE statement ('update or insert into CL$DUBLE_JORNAL(pcode, verno, adddcode, mdate) values ( ? ,  ? ,  ? , current_date) matching (pcode, verno)')
                      (pcode, verno, adddcode)
    ON external '192.168.2.10:meta' AS USER 'CHEA' password 'PDNTP';
  END
  -- 2. список не экспортированных pcode
  FOR EXECUTE statement ('select pcode from CL$DUBLE_JORNAL where mdate<current_date and verno=0')
  ON external '192.168.2.10:meta' AS USER 'CHEA' password 'PDNTP'
  INTO pcode do
  BEGIN
    -- 2.1 ищем по журналу объединений [PCODE]
    IF (EXISTS(SELECT * FROM clientjoinlist WHERE pcode= :pcode )) THEN
    BEGIN
      outdcode = NULL;
      SELECT FIRST 1 uid FROM clientjoinlist WHERE pcode= :pcode ORDER BY modifydate DESC
        INTO outdcode;
      EXECUTE statement ('update CL$DUBLE_JORNAL set outdate=current_date-1, outtype=1, outdcode= ? where verno=0 and pcode= ? ')
                        (outdcode, pcode)
      ON external '192.168.2.10:meta' AS USER 'CHEA' password 'PDNTP';
    END
 
    -- 2.2 ищем по журналу объединений [MAINPCODE]
    ELSE IF (EXISTS(SELECT * FROM clientjoinlist WHERE mainpcode= :pcode )) THEN
    BEGIN
      outdcode = NULL;
      SELECT FIRST 1 uid FROM clientjoinlist WHERE mainpcode= :pcode ORDER BY modifydate DESC
        INTO outdcode;
      EXECUTE statement ('update CL$DUBLE_JORNAL set outdate=current_date-1, outtype=2, outdcode= ? where verno=0 and pcode= ? ')
                        (outdcode, pcode)
      ON external '192.168.2.10:meta' AS USER 'CHEA' password 'PDNTP';
    END
 
    -- 2.3 исправлена ошибка, не известно кем
    ELSE
    BEGIN
      EXECUTE statement ('update CL$DUBLE_JORNAL set outdate=current_date-1, outtype=3 where verno=0 and pcode= ? ')
                        (pcode)
      ON external '192.168.2.10:meta' AS USER 'CHEA' password 'PDNTP';
    END
  END
END

администрирование/скрипты/цбд/дубликаты/дубль.журнал.дубликатов.txt · Последние изменения: 2017/08/11 17:02 (внешнее изменение)