2017-03-20 176 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