一个decimal格式数据的问题(在线等)
写有如下存储过程
DECLARE
@OrderNum nvarchar(50),
@Uname nvarchar(50),
@Addr nvarchar(500),
@Tel nvarchar(50),
@Email nvarchar(50),
@ProductID int,
@Price decimal(9),
@ProductSum int,
@Heji decimal(9),
@Asum decimal(9),
@Jurisdiction int/*权限会员或非会员*/
/*下面为赋值*/
SET @OrderNum = '114 '
SET @Uname = 'lll '
set @Addr= 'dfsaf '
set @Tel= '111111 '
set @Email= 'fdsad '
set @ProductID=16
set @Price= '7.6 '
set @ProductSum=2
set @Heji= '15.2 '
set @Asum= '15.2 '
set @Jurisdiction=3
declare @iOrderID int
declare @sCount int
/*向tblOrder(定单表中添加信息)*/
if (Exists(select ID from tblOrder where OrderNum=@OrderNum))
begin
select @iOrderID=ID from tblOrder where OrderNum=@OrderNum
end
else
begin
insert into tblOrder(OrderNum,UserName,Addr,Tel,Email,Worth,Jurisdiction)values(@OrderNum,@Uname,@Addr,@Tel,@Email,@Asum,@Jurisdiction)
set @iOrderID=@@identity
set @sCount=(select count(ID) from tblMember where Email=@Email and MemberType=@Jurisdiction)
if(@sCount> 0)
begin
update tblMember set MemberName=@Uname,Address=@Addr,Phone=@Tel where Email=@Email and MemberType=@Jurisdiction
end
else
begin
insert into tblMember (MemberType,MemberName, TrueName, Address, Phone, Email, Password) values (@Jurisdiction,@Uname, ' ',@Addr,@Tel,@Email, ' ')
end
end
/*向tblOrderDetail(定单明细表中添加信息)*/
insert into tblOrderDetail(OrderID,ProductID,Price,Number,Heji)values(@iOrderID,@ProductID,@Price,@ProductSum,@Heji)
运行后我到数据库中看,发现本来是15.2的值变成15,7.6却变成8
它进行了四舍五入
是怎么回事???
------解决方案--------------------看看数据表的字段类型
------解决方案--------------------数据类型不对.
decimal(9,2)
------解决方案--------------------你要指定小数的位,
一般可以定义为
declare @d decimal(18,3)
------------------
SqlServer的帮助中:
decimal 和 numeric
带定点精度和小数位数的 numeric 数据类型。
decimal[(p[, s])] 和 numeric[(p[, s])]
定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。
p(精度)
指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。
s(小数位数)
指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化。
精度 存储字节数
1 - 9 5
10-19 9
20-28 13
29-38 17
------解决方案--------------------