2017-03-20 2 views
1

J'essaye d'écrire une fonction SQLCLR qui retournera une valeur booléenne Nullable. Si je déclare la fonction comme ceci: public static SqlBoolean? IsTimeZoneDST(SqlString timeZone) alors j'obtiens une erreur en essayant d'employer l'assemblée en disant que les types pour la valeur de retour ne correspondent pas. Y at-il quelque chose qui me manque ou n'est-il pas possible de retourner un booléen nullable dans ce cas?Fonction SQL CLR pour renvoyer un booléen nullable

+4

'SqlBoolean' a déjà la possibilité d'être" null ", ce qui peut être déterminé avec le [' SqlBoolean.IsNull'] (https://msdn.microsoft.com/en-us/library/system.data.sqltypes Propriété .sqlboolean.isnull (v = vs.110) .aspx). – juharr

+0

Comment essayez-vous d'utiliser l'assembly - publiez le code qui déclenche l'erreur et l'erreur exacte. – BeanFrog

Répondre

1

Tous les types .NET Sql* ont un champ .Null (propriété statique) qui crée une nouvelle instance de ce qui être considéré comme une valeur NULL pour ce type de données dans T-SQL.

En outre, il existe plusieurs autres propriétés et méthodes communes de tous les Sql* types:

  • .IsNull pour tester si la valeur est NULL aussi loin que T-SQL concerne
  • .Value renverra le équivalent .NET type de données, comme un String pour SqlString ou int/Int32 pour SqlInt32, etc.

La seule fois où vous devez utiliser un type .NET nullable, je crois, est lors de l'utilisation du type de données T-SQL DATETIME2, qui correspond à DateTime ou DateTime?.

0

Merci juharr. Je savais qu'il me manquerait quelque chose de simple. La réponse au cas où quelqu'un d'autre a besoin est de changer la déclaration: public static SqlBoolean IsTimeZoneDST(SqlString timeZone) et puis quand vous en avez besoin return SqlBoolean.Null