Gestion des erreurs dans les Fonctions Définies par l'Utilisateur

Je veux écrire un non-CLR fonction définie par l'utilisateur dans SQL Server 2005. Cette fonction prend une chaîne d'entrée et retourne une chaîne de sortie. Si la chaîne d'entrée est incorrect, alors je veux indiquer une erreur à l'appelant.

Ma première pensée a été d'utiliser RAISERROR pour lever une exception. Toutefois, SQL Server n'autorise pas ce à l'intérieur d'une UDF (bien que vous pouvez soulever des exceptions dans le CLR à base de fonctions définies par l'utilisateur, allez comprendre).

Mon dernier recours serait de retourner une valeur NULL (ou une autre erreur-la valeur de l'indicateur), de la fonction si la valeur d'entrée est dans l'erreur. Cependant, je n'aime pas cette option, car elle:

  1. Ne pas fournir toute information utile à l'appelant
  2. Ne m'autorise pas à retourner une valeur NULL en réponse à une entrée valide (car il est utilisé comme un code d'erreur).

Est-il de l'appelant de manière conviviale pour interrompre une fonction sur une erreur dans SQL Server?

OriginalL'auteur Craig Walker | 2009-08-06