Les fonctions doivent être déterministes et ne peuvent pas être utilisées pour apporter des modifications à la base de données, alors que les procédures stockées vous permettent d'effectuer des insertions et des mises à jour, etc.
Vous devriez limiter votre utilisation des fonctions, car elles posent un énorme problème d'évolutivité pour les requêtes complexes et volumineuses. Elles deviennent en quelque sorte une "boîte noire" pour l'optimiseur de requêtes, et vous constaterez d'énormes différences de performances entre l'utilisation de fonctions et la simple insertion du code dans une requête.
Mais ils sont définitivement utiles pour les rendements évalués par table dans des cas très spécifiques.
Si vous devez analyser une liste délimitée par des virgules, pour simuler le passage d'un tableau à une procédure, une fonction peut transformer la liste en tableau pour vous. C'est une pratique courante avec Sql Server 2005, puisque nous ne pouvons pas encore passer des tableaux aux procédures stockées (nous le pouvons avec 2008).
1 votes
Cela semble être la réponse parfaite : stackoverflow.com/a/1179778/365188