Bonjour,
Effectivement, GO est une instruction pour l'utilitaire en lignes de commandes SQLCMD avec lequel SQL Server Management Studio interagit. Toute création de module (procédure stockée, fonction, déclencheur) doit être unique : il ne peut y avoir d'autre instruction dans le lot. On sépare les lots à l'aide de GO
En ce qui concerne l'expression de votre requête, vous pouvez vous inspirer de ce que j'ai donné
ici. Je vous déconseille l'utilisation de fonctions scalaires, car leur exécution est contre-performante par nature : de telles fonctions sont exécutées ligne de résultat par ligne de résultat. Supposons donc que votre requête retourne 1000 lignes : la fonction scalaire sera appelée 1000 fois. On peut s'en rendre compte à l'aide de SQL Profiler.
En revanche, si vous créez une fonction de table
en ligne, celle-ci est appelée une seule fois pour l'ensemble des lignes de résultat, ce qui est de la même nature que SQL : ensembliste et en conséquence performant.
@++

Partager