У меня есть таблица со столбцом, определенным следующим образом:
PrincipalBalance DECIMAL(13,2) NOT NULL
У меня есть хранимая процедура, которая возвращает это значение следующим образом:
SELECT D.PrincipalBalance
FROM MyTable AS D
WHERE ID = @myKey;
Если я проверяю метаданные длятаблица, определение столбца является правильным (оно отображается как DECIMAL(13,2)
.) Оно также отображается с правильным типом в обозревателе объектов.Однако IntelliSense для столбца в хранимой процедуре показывает, что это INT
, что вызывает недоумение.
Единственный обходной путь, который я нашел для этого, заключается в использовании CAST
/ CONVERT
вхранимая процедура, которая кажется ненужной.
Примечание Ранее сегодня я столкнулся с той же проблемой с десятичным столбцом, который возвращался как VARCHAR(50)
(или каким-либо другимсоответствующая длина).Интересно, что в обоих случаях значение десятичного столбца было равно нулю.
Что здесь происходит?Почему SQL Server выбирает неправильный тип?