Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 存储价格-如何停止舍入?_Sql Server_Vb.net - Fatal编程技术网

Sql server 存储价格-如何停止舍入?

Sql server 存储价格-如何停止舍入?,sql-server,vb.net,Sql Server,Vb.net,我试图存储一个价格,但它存储它的便士总是向上或向下取整。如何停止该操作,使其在小数点后存储实际值?非常感谢 VB代码 Public Sub UpdateItemBuyPrice(ByVal fileID As Integer, ByVal BuyPrice As Decimal) Dim DBConnect As New DBConn Using db As DbConnection = DBConnect.Conn("DBConnectionString")

我试图存储一个价格,但它存储它的便士总是向上或向下取整。如何停止该操作,使其在小数点后存储实际值?非常感谢

VB代码

Public Sub UpdateItemBuyPrice(ByVal fileID As Integer, ByVal BuyPrice As Decimal)

    Dim DBConnect As New DBConn
    Using db As DbConnection = DBConnect.Conn("DBConnectionString")
        Dim cmd As SqlCommand = DBConnect.Command(db, "UpdateItemBuyPrice")

        cmd.Parameters.Add(New SqlParameter("fileID", SqlDbType.Int, ParameterDirection.Input)).Value = fileID
        cmd.Parameters.Add(New SqlParameter("BuyPrice", SqlDbType.Decimal, ParameterDirection.Input)).Value = BuyPrice
        db.Open()
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        cmd = Nothing
        db.Dispose()
        db.Close()
    End Using
End Sub
MS SQL

PROCEDURE [ocbUser].[UpdateItemBuyPrice]
    @fileID             integer,
    @BuyPrice       decimal
AS
BEGIN

UPDATE [tblItems]
   SET [BuyPrice] = @BuyPrice
 WHERE [fileID] = @fileID

结束

指定精度和刻度,例如十进制(18,2),它可以处理成本而无需四舍五入

**Decimal (p,s)**
精确数值,精度p,标度s


示例:decimal(5,2)是一个小数点前有3位,小数点后有2位的数字

这可能会有所帮助:您必须添加精度,但我不确定默认精度是多少。很高兴看到您使用和
参数实现了
。作为旁注,
使用
的美妙之处在于,您不需要
处理对象。使用
SqlCommand
实现
,然后可以删除
cmd.Dispose()
cmd=Nothing
db.Dispose()
db.Close()
。使用
块退出
将处理对象,对于
SqlConnection
它也将关闭连接。@Bugs-顺便说一句,您确定需要处理SqlCommand吗?它不只是内存,因此可以进行垃圾收集吗?@peterG个人认为,如果一个对象实现了
IDisposable
,我会使用
块将其包装在
中。对于
SqlCommand
,我认为这并不像您所说的那样绝对必要。对我来说,这是一种习惯。您还可以使用
来实现一个
,使用
块<代码>使用db作为DbConnection=DBConnect.Conn(“DBConnectionString”),cmd作为SqlCommand=DBConnect.Command(db,“UpdateItemBuyPrice”)。。。结束使用
,以便更容易阅读。@Bugs有趣-谢谢。在PimpTech的评论中还发现了前进链接中的讨论。围绕这个问题的争议似乎比我想象的要多!Oops是的,它正在工作:-)我将列定义为buyPrice(10,2),但忘记在sql代码中添加(10,2)位。非常感谢。