linia := pLinePrefix pPrefix;items := 0;FOR i IN pKolumny.FIRST..pKolumny.LASTLOOPchunk := replace(pTemplate,'{COL}',pKolumny(i));IF i < pKolumny.LAST THENchunk := chunk pSeparator;ELSEchunk := chunk pPostfix;END IF; IF length(linia) + length(chunk) > pLimitChars OR items=pLimitItems THENkod(linia);linia := pLinePrefix;items := 0;END IF; linia := linia chunk;items := items + 1;END LOOP;kod(linia);END;BEGINdbms_utility.COMMA_TO_TABLE(pNaturalKey,mItemCnt,mNK);dbms_utility.COMMA_TO_TABLE(pOverwriteCols,mItemCnt,mOvw);dbms_utility.COMMA_TO_TABLE(pVersionedCols,mItemCnt,mVer);dbms_utility.COMMA_TO_TABLE(pNaturalKey','pVersionedCols','pOverwriteCols,mItemCnt,mAll);mNK.DELETE(mNK.COUNT);mOvw.DELETE(mOvw.COUNT);mVer.DELETE(mVer.COUNT);mAll.DELETE(mAll.COUNT); kod('DECLARE');kod(' CURSOR c IS');kod(' SELECT');formatuj_liste2(mAll,'src.{COL}',', ',75,10,'',', ',' ');kod(' CASE');kod(' WHEN trg.' mNk(1) ' IS NULL THEN ''I''');formatuj_liste2(mVer,'(src.{COL}!=trg.{COL} OR (src.{COL} IS NULL AND trg.{COL} IS NOT NULL) OR (src.{COL} IS NOT NULL AND trg.{COL} IS NULL))',' OR ',250,1,'WHEN ',' THEN ''V''',' ');kod(' ELSE ''U''');kod(' END oper_ind');kod(' FROM ' pSrcTable ' src ');kod(' LEFT JOIN ' pTrgTable ' trg ');formatuj_liste2(mNK,'src.{COL}=trg.{COL}',' AND ',150,1,'ON ','','');kod(' AND trg.' pCurrRecFlag '=1');kod(' WHERE trg.' mNK(1) ' IS NULL OR');formatuj_liste2(mVer,'(src.{COL}!=trg.{COL} OR (src.{COL} IS NULL AND trg.{COL} IS NOT NULL) OR (src.{COL} IS NOT NULL AND trg.{COL} IS NULL))',' OR ',250,1,'',' OR ',' ');formatuj_liste2(mOvw,'(src.{COL}!=trg.{COL} OR (src.{COL} IS NULL AND trg.{COL} IS NOT NULL) OR (src.{COL} IS NOT NULL AND trg.{COL} IS NULL))',' OR ',250,1,'','',' ');kod(';');
Add a Comment