2017-03-20 275 views
1

我想写一个SQLCLR函数,它将返回一个可为null的布尔值。如果我声明这样的函数:public static SqlBoolean? IsTimeZoneDST(SqlString timeZone),那么当试图使用程序集时说我的返回值的类型不匹配时会出错。有什么我丢失或不可能返回一个可空的布尔值在这种情况下?SQL CLR函数返回空值布尔

+4

'SqlBoolean'已经具备了可以用['SqlBoolean.IsNull']确定的“null”的能力(https://msdn.microsoft.com/en-us/library/system.data.sqltypes .sqlboolean.isnull(v = vs.110).aspx)属性。 – juharr

+0

你如何试图使用程序集 - 发布引发错误的代码以及确切的错误。 – BeanFrog

回答

1

所有.NET Sql*类型都有一个.Null场(静态属性)的创建一个新的实例会出现什么在T-SQL中被视为该数据类型的NULL值。

此外,还有其他一些公共属性和所有Sql*类型的方法:

  • .IsNull以测试值NULL至于T-SQL而言
  • .Value将返回等效.NET数据类型,诸如用于StringSqlString,或用于SqlInt32int/Int32

我相信,在使用T-SQL DATETIME2数据类型时,您应该需要使用.NET可空类型的唯一时间,该数据类型映射到DateTimeDateTime?

0

谢谢juharr。我知道我会错过简单的东西。万一有人回答人需要它的声明更改为:public static SqlBoolean IsTimeZoneDST(SqlString timeZone),然后当你需要它return SqlBoolean.Null