簡體   English   中英

如何在c#中使用SQL Server存儲過程數值參數

[英]How to use SQL Server stored procedure numeric parameter in c#

我在我的一個C#項目中使用以下SQL Server存儲過程。

create procedure [dbo].[TestRecordSelect]
@OMarks numeric(3,1) output
as 
begin
select @OMarks = isnull(sum(cast(OMarks as numeric(3,1))),0) from Marks 
end

當我在SQL Server中執行該過程時,我得到了所需的結果,即24.9。 但是當我在我的C#項目中使用相同的過程@OMarks如下方式調用@OMarks

cmd.Parameters.Add("@OMarks", SqlDbType.Decimal).Direction = ParameterDirection.Output;
tbomarks.Text = cmd.Parameters["@OMarks"].Value.ToString();  

我得到25而不是24.9這是四舍五入的數據。

我的問題是我不想得到25.我希望得到24.9的tbomarks

SqlParameter param = new SqlParameter("@OMarks", SqlDbType.Decimal);
param.Direction = ParameterDirection.Output;
param.Precision = 3;
param.Scale = 1;
cmd.Parameters.Add(param);

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.scale.aspx

在C#中,您沒有指定參數的Scale (或Precision),這意味着您將獲得零小數位。

如果未明確指定Scale屬性且服務器上的數據不適合縮放0(默認值),則可能會截斷數據

輸出參數需要精度和比例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM