MS Access podporuje v SQL funkciu IIF( condition, expr1, expr2 )
Takúto funkciu viem v pohode vyrobiť.
Ale pozor: jeden z výrazov expr1, expr2 môže viesť k chybe.
Preto je v IIF ako prvý parameter podmienka, kde sa rozhodne, ktorý z výrazov vykonať. Lenže funkcie v SQLite bez ošetrenia, nevedia voliteľne ignorovať jeden z parametrov.
Výrazy expr1 a expr2 môžu byť funkcie. Pri ich výpočte potrebujem zistiť, ako dopadla podmienka. A podľa toho programovo zariadiť, aby sa tá "zlá" expr, ani nepočítala.. Pretože by viedla k chybe.
Samozrejme, že CASE WHEN by to riešil. Ale ten IIF je menej náročný na priestor .. (Sú aj iné dôvody)
Technicky popísané:
Ako mám v nejakej UDF funkcii zistiť, že je vlastne parametrom inej UDF funkcie?
A optimálne v druhom a treťom parametri/funkcii, skontrolovať výsledok výpočtu prvého parametra?
Podľa toho by som vedel, či môžem bez počítania napríklad vrátiť null?
Ďakujem
PS: niežeby som sa nepokúšal zistiť to sám. Ale už pár hodín je moja snaha bez výsledku.
Dal by sa odignorovať zbytočný exprX, cez try .. except .. Lenže potom by som nevedel ošetriť ozajstné chyby.