Je souhaite écrire une fonction non CLR définie par l'utilisateur dans SQL Server 2005. Cette fonction prend une chaîne d'entrée et renvoie une chaîne de sortie. Si la chaîne d'entrée n'est pas valide, je veux indiquer une erreur à l'appelant.Traitement des erreurs dans les fonctions définies par l'utilisateur
Ma première pensée a été d'utiliser RAISERROR pour déclencher une exception. Toutefois, SQL Server n'autorise pas cela dans un fichier UDF (bien que vous puissiez générer des exceptions dans les fichiers UDF basés sur CLR, allez figure). Mon dernier recours consisterait à renvoyer une valeur NULL (ou une autre valeur d'indicateur d'erreur) de la fonction si la valeur d'entrée est erronée. Cependant, je n'aime pas cette option, comme:
- ne fournit aucune information utile à l'appelant
- ne me permet pas de revenir un NULL en réponse à l'entrée valide (car il est utilisé comme un code d'erreur).
Existe-t-il un moyen convivial d'arrêter une fonction sur une erreur dans SQL Server?
Je m'y attendais autant, mais je pensais que je demanderais. Merci. –
Le problème avec les sprocs est que vous ne pouvez pas les appeler en ligne avec les fonctions. –
Je suis d'accord avec @MikeK. La raison pour laquelle j'utilise le fichier UDF et non une procédure stockée complète est pour l'utilisation en ligne. La réponse à cette question a-t-elle changé dans les versions plus récentes de SQL Server? (par exemple 2016) – ColinMac