[英]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.