La fonction UDF, ça tombe bien, est requêtable.
Pas conséquent, on peut parfaitement gérer le order by lors de la construction du select final.
Quant au @min / @max, on peut parfaitement soit utiliser between isnull(@min, 0) and isnull(@max, 99999999999) directement dans l'UDF, ou plus proprement je pense, passer au paramètre des valeurs renseignées de ma même manière directement dans le code du programme :
pMin.Value = min.OrDefault(0);
pMax.Value = max.OrDefault(int.MAX_VALUE);
Bref, rien de plus compliqué.
Par contre, avec vos solutions ORM, on va rigoler quand il va falloir faire ce genre de comptages :
Code:
1 2 3 4 5 6 7 8 9 10 11
| select
country.continent,
country.name pays,
sum(city.population) * case when city.type = 'village' then 1 else 0 end paysans,
sum(city.population) * case when city.type = 'village' then 1 else 0 end citadins,
sum(city.population) population_totale,
sum(city.population) over (partition by country.continent) population_continent
from
country
inner join city on city.country_id = country.id
group by country.name |
Et là on est dans du très simple.