我正在尝试编写一个将返回可为空的布尔值的SQLCLR函数。如果我像这样声明函数:public static SqlBoolean? IsTimeZoneDST(SqlString timeZone)
那么我在尝试使用程序集时会收到错误,指出返回值的类型不匹配。我是否缺少某些内容,或者在这种情况下无法返回可为空的布尔值?
所有 .NET Sql*
类型都有一个.Null
字段(静态属性(,该字段创建一个新实例,该实例将被视为 T-SQL 中该数据类型的NULL
值。
此外,所有Sql*
类型还有其他几个常见属性和方法:
-
.IsNull
测试值是否NULL
T-SQL -
.Value
将返回等效的 .NET 数据类型,例如SqlString
的String
,或SqlInt32
的int
/Int32
等。
我相信,唯一需要使用 .NET null 类型的情况是使用 T-SQL DATETIME2
数据类型时,该数据类型映射到 DateTime
或 DateTime?
。
谢谢朱哈尔。我知道我会错过一些简单的东西。如果其他人需要它,答案是将声明更改为:public static SqlBoolean IsTimeZoneDST(SqlString timeZone)
,然后在您需要时return SqlBoolean.Null