我有一个表,其中的列定义如下:
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选择错误的类型?