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

Откуда: Москва
Сообщений: 948
declare @recovery [b]????[/b]
select @recovery=DATABASEPROPERTYEX('tempdb','Recovery')
select @recovery


В таком случае, какой тип переменной @recovery нужно присвоить?
20 ноя 12, 17:32    [13502413]     Ответить | Цитировать Сообщить модератору
 Re: Как определить тип полученного поля?  [new]
DATABASEPROPERTYEX
Guest
http://msdn.microsoft.com/ru-ru/library/ms186823(v=sql.105).aspx


смотрим на первую и последнюю колонку таблицы.
20 ноя 12, 17:37    [13502474]     Ответить | Цитировать Сообщить модератору
 Re: Как определить тип полученного поля?  [new]
SQL_VARIANT
Guest
teCa,
http://msdn.microsoft.com/ru-ru/library/ms186823.aspx
20 ноя 12, 17:38    [13502480]     Ответить | Цитировать Сообщить модератору
 Re: Как определить тип полученного поля?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
teCa
declare @recovery [b]????[/b]
select @recovery=DATABASEPROPERTYEX('tempdb','Recovery')
select @recovery


В таком случае, какой тип переменной @recovery нужно присвоить?
А тут разве не написано?
20 ноя 12, 17:39    [13502487]     Ответить | Цитировать Сообщить модератору
 Re: Как определить тип полученного поля?  [new]
:))))
Guest
DATABASEPROPERTYEX
http://msdn.microsoft.com/ru-ru/library/ms186823(v=sql.105).aspx

SQL_VARIANT
http://msdn.microsoft.com/ru-ru/library/ms186823.aspx

iap
тут

кучно легло
20 ноя 12, 17:41    [13502509]     Ответить | Цитировать Сообщить модератору
 Re: Как определить тип полученного поля?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
teCa,

В вашем примере переменной нужно присвоить тип sql_variant. Если вы хотите узнать базовый тип данных для произвольной переменной типа sql_variant, используйте функцию SQL_VARIANT_PROPERTY:

declare @recovery sql_variant;
select @recovery=DATABASEPROPERTYEX('tempdb','Recovery')
select SQL_VARIANT_PROPERTY(@recovery, 'BaseType'), SQL_VARIANT_PROPERTY(@recovery, 'MaxLength')


При этом учтите, что для типа nvarchar значение MaxLength нужно разделить на два (т.к. MaxLength указан в байтах). То есть, если для данного примера выводится набор данных "nvarchar 256", то тип данных будет nvarchar(128).
20 ноя 12, 17:43    [13502524]     Ответить | Цитировать Сообщить модератору
 Re: Как определить тип полученного поля?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Причём SQL_VARIANT_PROPERTY само возвращает данные типа sql_variant :) Поэтому правильнее будет так:
select cast(SQL_VARIANT_PROPERTY(@recovery, 'BaseType') as sysname), cast(SQL_VARIANT_PROPERTY(@recovery, 'MaxLength') as int)
20 ноя 12, 17:45    [13502545]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить