【问题标题】:SQL CLR Function to return nullable booleanSQL CLR 函数返回可为空的布尔值
【发布时间】:2017-03-20 14:33:55
【问题描述】:

我正在尝试编写一个返回可空布尔值的 SQLCLR 函数。如果我像这样声明函数:public static SqlBoolean? IsTimeZoneDST(SqlString timeZone),那么在尝试使用程序集时会出现错误,说返回值的类型不匹配。是否有我遗漏的东西,或者在这种情况下无法返回可为空的布尔值?

【问题讨论】:

  • SqlBoolean 已经能够为“null”,这可以通过SqlBoolean.IsNull 属性来确定。
  • 您如何尝试使用程序集 - 发布引发错误的代码以及确切的错误。

标签: c# .net sql-server nullable sqlclr


【解决方案1】:

所有 .NET Sql* 类型都有一个 .Null 字段(静态属性),该字段创建一个新实例,该实例将被视为 T-SQL 中该数据类型的 NULL 值。

此外,所有Sql* 类型还有其他几个通用属性和方法:

  • .IsNull 测试 T-SQL 的值是否为 NULL
  • .Value 将返回等效的 .NET 数据类型,例如 String 代表 SqlString,或 int / Int32 代表 SqlInt32 等。

我认为,唯一需要使用 .NET 可为空类型的情况是在使用 T-SQL DATETIME2 数据类型时,该数据类型映射到 DateTimeDateTime?

【讨论】:

    【解决方案2】:

    谢谢朱哈尔。我知道我会错过一些简单的东西。如果其他人需要,答案是将声明更改为:public static SqlBoolean IsTimeZoneDST(SqlString timeZone),然后在您需要时将其更改为return SqlBoolean.Null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2021-10-29
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2011-07-22
      相关资源
      最近更新 更多