Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Тип datetime2 в SQLCLR  [new]
Antoshka
Member

Откуда:
Сообщений: 828
Каким типом можно представить в CLR-функции SQL-тип datetime2? Чтобы при этом и значения NULL корректно обрабатывались.
16 авг 11, 12:35    [11125621]     Ответить | Цитировать Сообщить модератору
 Re: Тип datetime2 в SQLCLR  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Antoshka
Каким типом можно представить в CLR-функции SQL-тип datetime2? Чтобы при этом и значения NULL корректно обрабатывались.
см. в БОЛ "Сопоставление данных о параметрах CLR"

System.Data.SqlTypes.SqlDateTime
16 авг 11, 13:20    [11126030]     Ответить | Цитировать Сообщить модератору
 Re: Тип datetime2 в SQLCLR  [new]
Antoshka
Member

Откуда:
Сообщений: 828
//http://msdn.microsoft.com/ru-ru/library/ms131092.aspx
написано, что нет соответствующего типа
16 авг 11, 21:45    [11129406]     Ответить | Цитировать Сообщить модератору
 Re: Тип datetime2 в SQLCLR  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Antoshka
//http://msdn.microsoft.com/ru-ru/library/ms131092.aspx
написано, что нет соответствующего типа
Странно.

В локальном BOL написано, что есть:
dateSqlDateTimeDateTime Nullable<DateTime>
datetimeSqlDateTimeDateTime Nullable<DateTime>
datetime2SqlDateTimeDateTime Nullable<DateTime>


Для 2008 тоже написано, что есть:
http://msdn.microsoft.com/ru-ru/library/ms131092(v=SQL.100).aspx

Думаю, опечатка в онлайн BOL для R2
16 авг 11, 22:21    [11129521]     Ответить | Цитировать Сообщить модератору
 Re: Тип datetime2 в SQLCLR  [new]
Antoshka
Member

Откуда:
Сообщений: 828
SqlDateTime не проходит по диапазону и точности. Пошукал на поисковиках. Предлагают использовать System.DateTime в качестве типа параметров, но он, зараза, является VALUE-типом и не поддерживает значения NULL. Кто-то вообще предлагал как строку передавать. Похоже, что мне прямая дорога на connect.microsoft.com
17 авг 11, 10:19    [11130881]     Ответить | Цитировать Сообщить модератору
 Re: Тип datetime2 в SQLCLR  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
[quot Antoshkaъ... но он, зараза, является VALUE-типом и не поддерживает значения NULL. [/quot]
А вы его объявите как
DateTime? dt = null;
И будет вам счастье. Вот только надо будет на нул проверять не dt.value == null, а dt == null.
17 авг 11, 13:11    [11132496]     Ответить | Цитировать Сообщить модератору
 Re: Тип datetime2 в SQLCLR  [new]
Antoshka
Member

Откуда:
Сообщений: 828
gds
Antoshka
... но он, зараза, является VALUE-типом и не поддерживает значения NULL.

А вы его объявите как
DateTime? dt = null;
И будет вам счастье. Вот только надо будет на нул проверять не dt.value == null, а dt == null.

Действительно работает. Функции создаются, вызываются. Но! При любой попытке обновить сборку (сигнатура UDF в сборке не меняется!) с помощью ALTER ASSEMBLY получаю отлуп:

Msg 6270, Level 16, State 1, Line 1
ALTER ASSEMBLY failed because the required method "FormatDateTime2" in type "UserDefinedFunctions" was not found with the same signature in the updated assembly.

Спасает только удаление UDF, обновление сборки, создание функций заново.
17 авг 11, 14:59    [11133569]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить