Вы можете использовать SQL_VARIANT_PROPERTY()
, чтобы определить базовый тип данных вычисляемого столбца:
SELECT TOP 1 SQL_VARIANT_PROPERTY(ComputedColumnName, 'BaseType') FROM TableName
Или, если хотите:
SELECT DISTINCT SQL_VARIANT_PROPERTY(ComputedColumnName, 'BaseType') FROM TableName
Я понимаюэто нужно сделать один раз, чтобы вы могли указать правильный тип параметра.Но если вам нужно, вы также можете использовать эту функцию в своих скриптах.
ОБНОВЛЕНИЕ
Как правильно указал Мартин, описанный выше метод не будет работатьесли таблица пуста.
Вы можете добавить произвольную строку и применить метод или использовать альтернативный способ, предложенный Мартином, который работает независимо от наличия данных:
select t.name,t.precision,t.scale,t.max_length, t.is_nullable
from sys.computed_columns c
join sys.types t on t.user_type_id = c.user_type_id
where c.name='col_name' and c.object_id=object_id('schema_name.table_name')