Clipper On Line • Ver Tópico - SQL RAW SQL via OCI

SQL RAW SQL via OCI

Discussão sobre SQL

Moderador: Moderadores

 

SQL RAW SQL via OCI

Mensagempor Itamar M. Lins Jr. » 17 Fev 2015 19:07

Uma autoridade no assunto falando.

...and I am very happy with the performance.

I attachmend sample script from applications - really hundereds powerful tool.

Regards,
Marek Horodyski


/*
Synchronizacja CENGUR z produkcj¥.
*/
#define RDDI_CONNECT          1001
#define RDDI_EXECUTE          1003
#define RDDI_ERROR            1004
* #define RDDI_ERRORNO          1005
#define RDDI_DISCONNECT       1002

#define STALA_DNI             0

// # define current_date '2015-01-31'

NoActive

local n, i, v := v(), ts, stk, nrp, lp := {}, pokow := 0 //, debug
local tabCENGUR := {,,}
local tabmt     := {,,}
local syncDisplay := hb_MutexCreate()

dbCloseAll(),  v[ 19] += '\noweprod\exe\zi-2445(CGR)\'

Cls

? 'podˆ¥czenie do ˜rodowisk'

for n := 1 to 3
  tabCENGUR[ n] := RDDINFO( 1001, { "OCILIB", "CENGURUAT", "CENGUR", strtran( memoread( '\noweprod\cenGur\passFile.'), eol(), '')}, 'SQLMIX' )
  if tabCENGUR[ n] == 0
     ? 'brak polaczenia z Cengur'
     KodKlaw( 0)
     Return
  end
end

? 'Obci©cie tabeli po˜redniej (ma by† T !) ...', RDDINFO( 1003, "truncate table CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR", 'SQLMIX', tabCENGUR[ 1])
KodKlaw( 3)

ts := hb_DateTime() // synchronizacja wˆa˜ciwa.
* ###############################################
for n := 1 to 3 ; tabmt[ n] := hb_threadStart( @Boss(), 'SYNCSRODOW', tabCENGUR[ n], n, @pokow, syncDisplay)
end
* ###############################################

DispOutAt( MaxRow() - 2, 0, 'Proces gˆ¢wny - oczekiwanie na zakonczenie synchronizacji...')
aEval( tabMT, { |x| if( x != Nil, hb_threadJoin( x), )})
? 'Zakonczono - proces posynchoronizacji wˆa˜ciwej.'

kill( 'SYNCSRODOW')

DBUSEAREA( .T., 'SQLMIX', "select count(*) zostalo
                           from T_SLS_CGR_INTERF_GUR_ASI_POSR
                           where typ_komunikatu = 'x'", "xxx", ,,, tabCENGUR[ 1])
xxx->( i := int( zostalo), dbCloseArea())

if i > 0
   ? 'rozpoznanie nowych warunk¢w i nowych danych klienta.'
   ? '3. nowe warunki ubezpieczenia - zmienione lub skorygowane warunki ubezpieczenia klienta na bie¾¥cy lub nast©pny miesiÂ¥c'
   if !RDDINFO( 1003, "
      insert into T_SLS_CGR_INTERF_GUR_ASI_POSR
      ( typ_komunikatu,
        nr_polisy             ,
        id_klienta            ,
        kod_klienta           ,
        numer_karty           ,
        rola_klienta          ,
        imie                  ,
        imie2                 ,
        nazwisko              ,
        data_ur               ,
        pesel                 ,
        plec                  ,
        ulica                 ,
        nr_domu               ,
        nr_lokalu             ,
        kod_pocztowy          ,
        poczta                ,
        miejscowosc           ,
        kraj                  ,
        dpw                   ,
        dkw                   ,
        dpd                   ,
        kod_oddzialu          ,
        kod_owu_podst         ,
        kod_owu               ,
        kod_zmiany            ,
        status                ,
        kod_swiadczeniodawcy  ,
        kod_zakresu           ,
        suma_ubezpieczenia    ,
        procent_wspolplacenia )
      select
            '3' typ_komunikatu        , -- VARCHAR2 (1) NOT NULL
            -- p.miesiac_obowiazywania , -- DATE NOT NULL
            -- p.data_wpisu            , -- TIMESTAMP (6) NOT NULL
            p.nr_polisy             , -- VARCHAR2 (16)
            p.id_klienta            , -- NUMBER NOT NULL
            p.kod_klienta           , -- VARCHAR2 (43) NOT NULL
            p.numer_karty           , -- VARCHAR2 (32) NOT NULL
            p.rola_klienta          , -- VARCHAR2 (1) NOT NULL
            p.imie                  , -- VARCHAR2 (40) NOT NULL
            p.imie2                 , -- VARCHAR2 (40)
            p.nazwisko              , -- VARCHAR2 (40) NOT NULL
            p.data_ur               , -- DATE NOT NULL
            p.pesel                 , -- VARCHAR2 (11) NOT NULL
            p.plec                  , -- VARCHAR2 (1) NOT NULL
            p.ulica                 , -- VARCHAR2 (50)
            p.nr_domu               , -- VARCHAR2 (15) NOT NULL
            p.nr_lokalu             , -- VARCHAR2 (15)
            p.kod_pocztowy          , -- VARCHAR2 (5)
            p.poczta                , -- VARCHAR2 (32)
            p.miejscowosc           , -- VARCHAR2 (32) NOT NULL
            p.kraj                  , -- VARCHAR2 (50)
            p.dpw                   , -- DATE NOT NULL
            p.dkw                   , -- DATE NOT NULL
            p.dpd                   , -- VARCHAR2 (6) NOT NULL
            p.kod_oddzialu          , -- VARCHAR2 (4) NOT NULL
            p.kod_owu_podst         , -- VARCHAR2 (6) NOT NULL
            p.kod_owu               , -- VARCHAR2 (6) NOT NULL
            p.kod_zmiany            , -- VARCHAR2 (7)
            p.status                , -- VARCHAR2 (1) NOT NULL
            p.kod_swiadczeniodawcy  , -- VARCHAR2 (4) NOT NULL
            p.kod_zakresu           , -- VARCHAR2 (20) NOT NULL
            p.suma_ubezpieczenia    , -- NUMBER (9)
            p.procent_wspolplacenia   -- NUMBER (5)
      from t_sls_cgr_interf_gur_asi_posr p
      join t_sls_cgr_interf_gur_asi      s on p.nr_polisy = s.nr_polisy and s.wersja = 0
      where p.typ_komunikatu = 'x'
       and (   p.dpw                   != s.dpw                or
               p.dkw                   != s.dkw                or
               p.dpd                   != s.dpd                or
               p.suma_ubezpieczenia    != s.suma_ubezpieczenia or
               p.procent_wspolplacenia != s.procent_wspolplacenia)
      ", 'SQLMIX', tabCENGUR[ 1])
      ? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
      ? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
   else
      RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
   end
   ? '4. nowe dane klienta - zmienione lub skorygowane dane osobowe klienta na bie¾¥cy miesiÂ¥c'
   if !RDDINFO( 1003, "
      insert into T_SLS_CGR_INTERF_GUR_ASI_POSR
      ( typ_komunikatu,
        nr_polisy             ,
        id_klienta            ,
        kod_klienta           ,
        numer_karty           ,
        rola_klienta          ,
        imie                  ,
        imie2                 ,
        nazwisko              ,
        data_ur               ,
        pesel                 ,
        plec                  ,
        ulica                 ,
        nr_domu               ,
        nr_lokalu             ,
        kod_pocztowy          ,
        poczta                ,
        miejscowosc           ,
        kraj                  ,
        dpw                   ,
        dkw                   ,
        dpd                   ,
        kod_oddzialu          ,
        kod_owu_podst         ,
        kod_owu               ,
        kod_zmiany            ,
        status                ,
        kod_swiadczeniodawcy  ,
        kod_zakresu           ,
        suma_ubezpieczenia    ,
        procent_wspolplacenia )
      select
            '4' typ_komunikatu        , -- VARCHAR2 (1) NOT NULL
            -- p.miesiac_obowiazywania , -- DATE NOT NULL
            -- p.data_wpisu            , -- TIMESTAMP (6) NOT NULL
            p.nr_polisy             , -- VARCHAR2 (16)
            p.id_klienta            , -- NUMBER NOT NULL
            p.kod_klienta           , -- VARCHAR2 (43) NOT NULL
            p.numer_karty           , -- VARCHAR2 (32) NOT NULL
            p.rola_klienta          , -- VARCHAR2 (1) NOT NULL
            p.imie                  , -- VARCHAR2 (40) NOT NULL
            p.imie2                 , -- VARCHAR2 (40)
            p.nazwisko              , -- VARCHAR2 (40) NOT NULL
            p.data_ur               , -- DATE NOT NULL
            p.pesel                 , -- VARCHAR2 (11) NOT NULL
            p.plec                  , -- VARCHAR2 (1) NOT NULL
            p.ulica                 , -- VARCHAR2 (50)
            p.nr_domu               , -- VARCHAR2 (15) NOT NULL
            p.nr_lokalu             , -- VARCHAR2 (15)
            p.kod_pocztowy          , -- VARCHAR2 (5)
            p.poczta                , -- VARCHAR2 (32)
            p.miejscowosc           , -- VARCHAR2 (32) NOT NULL
            p.kraj                  , -- VARCHAR2 (50)
            p.dpw                   , -- DATE NOT NULL
            p.dkw                   , -- DATE NOT NULL
            p.dpd                   , -- VARCHAR2 (6) NOT NULL
            p.kod_oddzialu          , -- VARCHAR2 (4) NOT NULL
            p.kod_owu_podst         , -- VARCHAR2 (6) NOT NULL
            p.kod_owu               , -- VARCHAR2 (6) NOT NULL
            p.kod_zmiany            , -- VARCHAR2 (7)
            p.status                , -- VARCHAR2 (1) NOT NULL
            p.kod_swiadczeniodawcy  , -- VARCHAR2 (4) NOT NULL
            p.kod_zakresu           , -- VARCHAR2 (20) NOT NULL
            p.suma_ubezpieczenia    , -- NUMBER (9)
            p.procent_wspolplacenia   -- NUMBER (5)
      from t_sls_cgr_interf_gur_asi_posr p
      join t_sls_cgr_interf_gur_asi      s on p.nr_polisy = s.nr_polisy and s.wersja = 0
      where p.typ_komunikatu = 'x'
       and (   p.dpw                   = s.dpw                and
               p.dkw                   = s.dkw                and
               p.dpd                   = s.dpd                and
               p.suma_ubezpieczenia    = s.suma_ubezpieczenia and
               p.procent_wspolplacenia = s.procent_wspolplacenia)
      ", 'SQLMIX', tabCENGUR[ 1])
      ? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
      ? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
   else
      RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
   end
end

? 'Przepisanie z tabel poËœrednich do interfejsu :'
for i := 1 to 4
    ?? stk := PadC( i, 1) // string typ komunikatu (typ komunikatu jako string)
    if !RDDINFO( 1003, "
       update T_SLS_CGR_INTERF_GUR_ASI
       set wersja = wersja + 1
       where nr_polisy in
           ( select nr_polisy
               from T_SLS_CGR_INTERF_GUR_ASI_POSR where TYP_KOMUNIKATU = '&stk')", 'SQLMIX', tabCENGUR[ 1])
       ? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
       ? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
    else
       if !RDDINFO( 1003, "
          insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI (
            ID_KOMUNIKATU, TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, DATA_WPISU, NR_POLISY,
            ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, ROLA_KLIENTA, IMIE, IMIE2, NAZWISKO,
            DATA_UR, PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA,
            MIEJSCOWOSC, KRAJ, DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
            KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU, SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA)
          select
           ID_KOMUNIKATU, TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, DATA_WPISU, NR_POLISY,
            ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, ROLA_KLIENTA, IMIE, IMIE2, NAZWISKO,
            DATA_UR, PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA,
            MIEJSCOWOSC, KRAJ, DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
            KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU, SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA
           from CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR where TYP_KOMUNIKATU = '&stk'", 'SQLMIX', tabCENGUR[ 1])
              ? 'Nie poszlo :('
              ? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
              ? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
       else
         * if !RDDINFO( 1003, "
         *    delete from T_SLS_CGR_INTERF_GUR_ASI_POSR where TYP_KOMUNIKATU = '&stk'
         *    ", 'SQLMIX', tabCENGUR[ 1])
         * else
             RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
         * end
       end
    end
end

// komunikat '6' - rocznica polisy.
/*
DBUSEAREA( .T., 'SQLMIX', ;
         "select trunc( current_date + STALA_DNI, 'mm') - trunc( current_date, 'mm') zmiana from dual", "ZMIANA", ,,, tabCENGUR[ 1])

if zmiana->zmiana > 0 // zmienia si© miesiac za STALA_DNI dni.
   if !RDDINFO( 1003, ;
     "insert into T_SLS_CGR_ASS_POLISY_ROCZNICA
      ( TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, NR_POLISY, DATA_POCZATKU_ODP, KOD_OWU, KOD_PRODUKTU)
      select '6' TYP_KOMUNIKATU, trunc( current_date + STALA_DNI, 'mm') miesiac_obowiazywania, nr_polisy, to_date( substr( dpd, 3, 4)||'-'||substr( dpd, 1, 2)||'-01', 'yyyy-mm-dd') dpd,
             KOD_OWU, to_char( SUMA_UBEZPIECZENIA, '999999999')||'|'||to_char( PROCENT_WSPOLPLACENIA, '99')||'|'||subStr( KOD_ZAKRESU, -2, 2)||'|0' KOD_ZAKRESU
             --, MONTHS_BETWEEN( trunc( current_date + STALA_DNI, 'mm'), to_date( substr( dpd, 3, 4)||'-'||substr( dpd, 1, 2)||'-01')) mies
      from T_SLS_CGR_INTERF_GUR_ASI
      where wersja = 0 and status = 'C' and MONTHS_BETWEEN( trunc( current_date + 0, 'mm'), to_date( substr( dpd, 3, 4)||'-'||substr( dpd, 1, 2)||'-01')) = 12
      minus
      select TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, NR_POLISY, DATA_POCZATKU_ODP, KOD_OWU, KOD_PRODUKTU
      from T_SLS_CGR_ASS_POLISY_ROCZNICA
      where miesiac_obowiazywania = trunc( current_date + STALA_DNI, 'mm')
     ", 'SQLMIX', tabCENGUR[ 1])
      ? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
      ? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
   else
      RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
   end
end
zmiana->( dbCloseArea())
*/

? '-'
DispOutAt( MaxRow(), 2, 'Zakonczono po czasie ' + hb_tstostr( hb_NtoT( hb_dateTime() - ts)), 'I')
aEval( tabCENGUR, { |x| if( x != Nil .and. x > 0, RDDINFO( 1002, x),)})

__Wait( hb_DateTime())
Return

*----------------------------
//---------------------------
* #define #define #define #define #define #define
* #define #define #define #define #define #define
//---------------------------
*----------------------------

STATIC SYNCSRODOW
parameters connect, n, pokow, syncDisplay

local i, poks := {}, dbLink := "@l2GGR2" + ntos( n), lp, pok
local insert, polisa_nr := "", pok_polisa_nr := "", mdkw, mmo

DBUSEAREA( .T., 'SQLMIX', "select substr( username, 5, 4) pok from all_users&dbLink where username like 'GRK_%' and substr( username, -1, 1) != 'R' order by 1", "GGR", ,,, connect)
while !ggr->( eof()) ; ggr->( aadd( poks, Pok), dbSkip( 1))
end
ggr->( lp := Len( poks), dbCloseArea())

for i := 1 To lp // dla ka¾dego POK w danym ˜rodowisku zsynchronizuj : 1 - wygasˆe, 2 - nowe.
   pok := poks[ i], ++pokow
   if hb_MutexLock( syncDisplay)
      ? n, i, pok, '/', lp, dbLink, pokow
      hb_MutexUnLock( syncDisplay), inKey( .25)
   end
  Do SyncWygasle
  Do SyncNowe
  Do SyncZmienione // r¢¾nego powodu (x)
end
Return
*----------------------------
Procedure SyncWygasle
   // 2, poka¾ te kt¢re miaˆy C/1 i "znikn©ˆy" i wpisz do tabeli poËœredniej ...
   if !RDDINFO( 1003, "
       insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR (
                   TYP_KOMUNIKATU       ,
                   NR_POLISY            ,
                   ID_KLIENTA           ,
                   KOD_KLIENTA          ,
                   NUMER_KARTY          ,
                   IMIE                 ,
                   IMIE2                ,
                   NAZWISKO             ,
                   DATA_UR              ,
                   PESEL                ,
                   PLEC                 ,
                   ULICA                ,
                   NR_DOMU              ,
                   NR_LOKALU            ,
                   KOD_POCZTOWY         ,
                   POCZTA               ,
                   MIEJSCOWOSC          ,
                   KRAJ                 ,
                   DPW                  ,
                   DKW                  ,
                   DPD                  ,
                   KOD_ODDZIALU         ,
                   KOD_OWU_PODST        ,
                   KOD_OWU              ,
                   KOD_ZMIANY           ,
                   STATUS               ,
                   KOD_SWIADCZENIODAWCY ,
                   KOD_ZAKRESU          ,
                   SUMA_UBEZPIECZENIA   ,
                   PROCENT_WSPOLPLACENIA)
       select '2' typ, NR_POLISY, ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, IMIE, IMIE2, NAZWISKO, DATA_UR,
              PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA, MIEJSCOWOSC, KRAJ,
              DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
              KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU,
              SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA
       from T_SLS_CGR_INTERF_GUR_ASI c
  left join grk_&pok..rd&dbLink rd on substr( c.nr_polisy, 6) = rd.rd_typ_pol||'/'||ltrim( to_char( rd_nr_pol, '099999')) and rd.rd_kod_owu = 'LAKP30' and rd.rd_ident != 0 and rd.is_deleted = 'N' and rd.rd_kod = 'C'
      where c.kod_oddzialu = '&pok' and c.wersja = 0 and c.typ_komunikatu = '1' and rd.rd_ident is null
     ", 'SQLMIX', connect)
       ? 'Wygasle 0'
       ? RDDINFO( 1004,, 'SQLMIX', connect)
       ? RDDINFO( 1005,, 'SQLMIX', connect)
       Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()))
   else
       RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
   end
   // dpisz dkw i miesiac_obowiazywania dla 2 - nie ma odpowiedzialnosci
   dbUseArea( .T., 'SQLMIX', "
              select nr_polisy, substr( nr_polisy, 1, 4) pok, substr( nr_polisy, 6) polisa
                from t_sls_cgr_interf_gur_asi_posr
               where substr( nr_polisy, 1, 4) = '&pok'
   ", "NIEMA", ,,, connect)
   while !nieMa->( eof())   // wstaw dat© koäca i miesiÂ¥c obowiÂ¥zywania
      nieMa->( m->polisa_nr := field->polisa, m->pok_polisa_nr := field->nr_polisy, dbSkip( 1))
      dbUseArea( .T., 'SQLMIX', "
       select to_char( rd_dataoDO, 'yyyy-mm-dd') dkw
         from ( select rd_ident, rd_dataoDO, rd_nrkol, row_number() over( partition by rd_nr_pol, rd_typ_pol order by rd_nrkol desc) lp
                  from grk_&pok..rd&dbLink rd
                 where  is_deleted = 'N' and rd_kod_owu = 'LAKP30' and rd_typ_pol||'/'||ltrim( to_char( rd_nr_pol, '099999')) = '&polisa_nr'
              ) where lp = 1", "DKW", ,,, connect) // drugie zapytanie na tym samym poˆ¥czeniu.
      if !dkw->( eof())
         mdkw := dkw->dkw
         if !RDDINFO( 1003, "
            update t_sls_cgr_interf_gur_asi_posr x
            set dkw = '&mdkw'
            , miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 1
            where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'
            ", 'SQLMIX', connect)
             ? 'Wygasle 1'
             ? RDDINFO( 1004,, 'SQLMIX', connect)
             ? RDDINFO( 1005,, 'SQLMIX', connect)
             Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()) + "mdkw
                       update t_sls_cgr_interf_gur_asi_posr x
                       set dkw = '&mdkw'
                       , miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 1
                       where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'")
             ? dkw->dkw, valtype( dkw->dkw), mdkw
             dkw->( dbCloseArea())
             exit
         else
             RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
         end
      else
         if !RDDINFO( 1003, "
            update t_sls_cgr_interf_gur_asi_posr x
            set dkw = trunc( last_day( current_date), 'dd') + 1
            , miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 2 // celowo bˆ©dnie 2 a nie jeden. TESTY!!!
            where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'
            ", 'SQLMIX', connect)
             ? 'Wygasle 2'
             ? RDDINFO( 1004,, 'SQLMIX', connect)
             ? RDDINFO( 1005,, 'SQLMIX', connect)
             Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()) + "Null
                      update t_sls_cgr_interf_gur_asi_posr x
                      set dkw = trunc( last_day( current_date), 'dd') + 1
                      , miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 1
                      where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'")
         else
             RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
         end
      end
      dkw->( dbCloseArea())
   end
   nieMa->( dbCloseArea())
return
*----------------------------
Procedure SyncNowe
   // 1, poka¾ te kt¢re nie miaˆy C/1 a si© pojawiˆy i wpisz do tabeli poËœredniej ...
   if !RDDINFO( 1003, "
       insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR (
                   TYP_KOMUNIKATU       ,
                   NR_POLISY            ,
                   ID_KLIENTA           ,
                   KOD_KLIENTA          ,
                   NUMER_KARTY          ,
                   IMIE                 ,
                   IMIE2                ,
                   NAZWISKO             ,
                   DATA_UR              ,
                   PESEL                ,
                   PLEC                 ,
                   ULICA                ,
                   NR_DOMU              ,
                   NR_LOKALU            ,
                   KOD_POCZTOWY         ,
                   POCZTA               ,
                   MIEJSCOWOSC          ,
                   KRAJ                 ,
                   DPW                  ,
                   DKW                  ,
                   DPD                  ,
                   KOD_ODDZIALU         ,
                   KOD_OWU_PODST        ,
                   KOD_OWU              ,
                   KOD_ZMIANY           ,
                   STATUS               ,
                   KOD_SWIADCZENIODAWCY ,
                   KOD_ZAKRESU          ,
                   SUMA_UBEZPIECZENIA   ,
                   PROCENT_WSPOLPLACENIA)
       select '1' typ, do.insp||'/'||ru.typ||'/'||ltrim( to_char( ru.polisa, '099999')) polisa, kl.id_klienta, kl.kod_klient kod_klienta,
              kl.karta_l nr_karty, replace( ru.u_imie1, chr( 39), '-') imie, replace( ru.u_imie2, chr( 39), '-') imie2, replace( ru.u_nazwisko, chr( 39), '-') nazwisko, ru.data_ur,
              replace( ru.pesel, chr( 39), '-') pesel, ru.plec, replace( ru.kulica, chr( 39), '-') ulica, replace( ru.knr_domu, chr( 39), '-') nr_domu,
              replace( ru.knr_lokalu, chr( 39), '-') nr_lokalu, replace( ru.kkod_pt, chr( 39), '-') kod_poczt, replace( ru.kpoczta, chr( 39), '-') poczta,
              replace( ru.kmiejsc, chr( 39), '-') miejscowosc, replace( ru.kkraj, chr( 39), '-') kraj,
              rd.rd_dataood dpw, rd.rd_dataodo dkw, rd.rd_dpu dpd,
              do.insp, ta.warumowy kod_owu_podst, rd.rd_kod_owu kod_owu, rd.rd_kodzmia kod_zmiany, rd.rd_kod status, rd.rd_siec_sw kod_swiadczeniodawcy, rd.rd_zest_l kod_zakresu,
              rd.rd_s_ubezp suma_ubezpieczenia,  rd.rd_proc_w procent_wspolplacenia
       from grk_&pok..rd&dbLink rd
       join grk_&pok..do&dbLink do on 1=1 and do.is_deleted = 'N'
       join grk_&pok..ru&dbLink ru on ru.polisa = rd_nr_pol and ru.typ = rd.rd_typ_pol and ru.is_deleted = 'N'
       join grk_&pok..kl&dbLink kl on kl.rd_ident = rd.rd_ident and kl.is_deleted = 'N'
       join grk_&pok..ta&dbLink ta on ta.rodz_t = ru.rodz_t and ta.typ = ru.typ and ta.is_deleted = 'N'
  left join T_SLS_CGR_INTERF_GUR_ASI xx on  do.insp||'/'||ru.typ||'/'||ltrim( to_char( ru.polisa, '099999')) = xx.nr_polisy and xx.wersja = 0
       where rd.rd_kod_owu = 'LAKP30'
         and rd.rd_ident != 0
         and rd.is_deleted = 'N'
         and rd.rd_kod = 'C'
         and ( rd.rd_kodzmia <> 'MZ00003' or exists ( select 1
                                                   from grk_&pok..pt&dbLink pt
                                                  where pt.is_deleted='N'
                                                    and pt.status='N'
                                                    and pt.typ_nw=rd.rd_kod_dod
                                                    and pt.polisa_nw=rd.rd_ident ))
         and ( rd.rd_dataood < current_date or current_date + 3 > rd.rd_dataood )
         and ( xx.nr_polisy is null or xx.typ_komunikatu = 2)
     ", 'SQLMIX', connect)
       ? 'Nowe'
       ? RDDINFO( 1004,, 'SQLMIX', connect)
       ? RDDINFO( 1005,, 'SQLMIX', connect)
       Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()))
   else
       RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
   end
return
*----------------------------
Procedure SyncZmienione
   if !RDDINFO( 1003, "
       insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR (
                   TYP_KOMUNIKATU       ,
                   NR_POLISY            ,
                   ID_KLIENTA           ,
                   KOD_KLIENTA          ,
                   NUMER_KARTY          ,
                   IMIE                 ,
                   IMIE2                ,
                   NAZWISKO             ,
                   DATA_UR              ,
                   PESEL                ,
                   PLEC                 ,
                   ULICA                ,
                   NR_DOMU              ,
                   NR_LOKALU            ,
                   KOD_POCZTOWY         ,
                   POCZTA               ,
                   MIEJSCOWOSC          ,
                   KRAJ                 ,
                   DPW                  ,
                   DKW                  ,
                   DPD                  ,
                   KOD_ODDZIALU         ,
                   KOD_OWU_PODST        ,
                   KOD_OWU              ,
                   KOD_ZMIANY           ,
                   STATUS               ,
                   KOD_SWIADCZENIODAWCY ,
                   KOD_ZAKRESU          ,
                   SUMA_UBEZPIECZENIA   ,
                   PROCENT_WSPOLPLACENIA)
       select 'x' typ, do.insp||'/'||ru.typ||'/'||ltrim( to_char( ru.polisa, '099999')) polisa, kl.id_klienta, kl.kod_klient kod_klienta,
              kl.karta_l nr_karty, replace( ru.u_imie1, chr( 39), '-') imie, replace( ru.u_imie2, chr( 39), '-') imie2, replace( ru.u_nazwisko, chr( 39), '-') nazwisko, ru.data_ur,
              replace( ru.pesel, chr( 39), '-') pesel, ru.plec, replace( ru.kulica, chr( 39), '-') ulica, replace( ru.knr_domu, chr( 39), '-') nr_domu,
              replace( ru.knr_lokalu, chr( 39), '-') nr_lokalu, replace( ru.kkod_pt, chr( 39), '-') kod_poczt, replace( ru.kpoczta, chr( 39), '-') poczta,
              replace( ru.kmiejsc, chr( 39), '-') miejscowosc, replace( ru.kkraj, chr( 39), '-') kraj,
              rd.rd_dataood dpw, rd.rd_dataodo dkw, rd.rd_dpu dpd,
              do.insp, ta.warumowy kod_owu_podst, rd.rd_kod_owu kod_owu, rd.rd_kodzmia kod_zmiany, rd.rd_kod status, rd.rd_siec_sw kod_swiadczeniodawcy, rd.rd_zest_l kod_zakresu,
              rd.rd_s_ubezp suma_ubezpieczenia,  rd.rd_proc_w procent_wspolplacenia
       from grk_&pok..rd&dbLink rd
       join grk_&pok..do&dbLink do on 1=1 and do.is_deleted = 'N'
       join grk_&pok..ru&dbLink ru on ru.polisa = rd_nr_pol and ru.typ = rd.rd_typ_pol and ru.is_deleted = 'N'
       join grk_&pok..kl&dbLink kl on kl.rd_ident = rd.rd_ident and kl.is_deleted = 'N'
       join grk_&pok..ta&dbLink ta on ta.rodz_t = ru.rodz_t and ta.typ = ru.typ and ta.is_deleted = 'N'
       where rd.rd_kod_owu = 'LAKP30'
         and rd.rd_ident != 0
         and rd.is_deleted = 'N'
         and rd.rd_kod = 'C'
         and ( rd.rd_kodzmia <> 'MZ00003' or exists ( select 1
                                                   from grk_&pok..pt&dbLink pt
                                                  where pt.is_deleted='N'
                                                    and pt.status='N'
                                                    and pt.typ_nw=rd.rd_kod_dod
                                                    and pt.polisa_nw=rd.rd_ident ))
         and ( rd.rd_dataood < current_date or current_date + 3 > rd.rd_dataood )
       minus
       select 'x' typ, NR_POLISY, ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, IMIE, IMIE2, NAZWISKO, DATA_UR,
              PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA, MIEJSCOWOSC, KRAJ,
              DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
              KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU,
              SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA
       from T_SLS_CGR_INTERF_GUR_ASI
       where kod_oddzialu = '&pok' and wersja = 0
     ", 'SQLMIX', connect)
       Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()))
       ? 'Zmienione'
       ? RDDINFO( 1004,, 'SQLMIX', connect)
       ? RDDINFO( 1005,, 'SQLMIX', connect)
   else
       RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
   end
return
*----------------------------


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes



Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro