... v PL/SQL. Akorat svatky jsem mel zadane jako
tabulku, protoze zrovna v te aplikaci mohou byt
i nektere "lokalni" nepracovni dny navic. Z toho
duvodu jsem se taky nemusel obtezovat Velikonocemi
- ty jsou v te tabulce take.
K vyse uvedenemu kodu: dospel jsem v podstate
k podobnemu vysledku, jen tam misto dvojiho
volani AddWDay() a smycky WHILE mam smycku
LOOP .. END LOOP a ten kod podobny Vasemu AddWDay()
tam mam jen jednou, takze nepotrebuju dalsi pomocnou
funkci.
-Yenya
Kdyz si vygeneruji svatky na deset let dopredu, tak si tam mohu umistit i ty velikonoce. Ulozenim svatku do tabulky urcite urychlim vypocet. Presto funkce, ktera generuje svatky ma smysl - nemusi se tabulka svatku vypisovat rucne. Teoreticky vzato - bysme meli dojit ke stejnemu vysledku - tvaru funkce a preferovani WHILE je uz moje osobni deformace :->
Ale ne - budto jsem to napsal nesrozumitelne, nebo jste me nepochopil. Jde o dve ortogonalni veci:
Prvni vec je, jestli mit svatky a velikonoce v tabulce nebo se je snazit pocitat. Tam jsem s Vami zajedno v tom, ze v tabulce je to rychlejsi, pomoci funkce je to elegantnejsi.
Druha vec (ktera ale s vyse uvedenym nesouvisi) je, ze kdyz funkci AddWDays napisete misto WHILE smycky pomoci LOOP .. END LOOP, tak tam nemusite mit dvakrat skoro ten stejny kod:
st := $1; ed := AddWDay(st,$2);
korekce := PocetStatnichSvatku(st, ed, ARRAY[6,0]);
Cili vlastne potom usetrite jedno volani funkce AddWDay() a tedy vubec funkci AddWDay() nemusite definovat a prislusny kod muzete napsat primo dovnitr funkce AddWDays(). Proto je v tomto pripade WHILE mene elegantni (s WHILE tam mate dvakrat skoro stejny kod, coz je skarede).
-Yenya