我在SQL Server中有一個數據庫列的數據類型decimal(7,4)
。我正在爲應用程序創建業務層。要確保所有使用我的方法的用戶都應以正確的格式傳遞參數:decimal(7,4)
。確保輸入參數的數據類型
當用戶通過傳遞輸入參數調用我的方法時,確保精度和刻度的最佳方式是decimal(7,4)
?
注意:我不是在尋找格式化小數,這是提到here。
注:我關心的方法參數;而不是將價值傳遞給數據庫。
我在SQL Server中有一個數據庫列的數據類型decimal(7,4)
。我正在爲應用程序創建業務層。要確保所有使用我的方法的用戶都應以正確的格式傳遞參數:decimal(7,4)
。確保輸入參數的數據類型
當用戶通過傳遞輸入參數調用我的方法時,確保精度和刻度的最佳方式是decimal(7,4)
?
注意:我不是在尋找格式化小數,這是提到here。
注:我關心的方法參數;而不是將價值傳遞給數據庫。
做如下
SqlParameter parameter = new SqlParameter("@YourParameterName", SqlDbType.Decimal);
parameter.Precision = 7;
parameter.Scale = 4;
parameter.Value = yourParameterValue;
cmd.Parameters.Add(parameter);
你可以定義參數爲sql_variant
然後用SQL_VARIANT_PROPERTY
斷言正確的參數類型使用:
IF OBJECT_ID('dbo.Decimal74Only') IS NOT NULL DROP PROCEDURE dbo.Decimal74Only;
GO
CREATE PROCEDURE dbo.Decimal74Only
@p1 SQL_VARIANT
AS
BEGIN
IF(
SQL_VARIANT_PROPERTY(@p1,'BaseType')<>'decimal'
OR
SQL_VARIANT_PROPERTY(@p1,'Precision')<>7
OR
SQL_VARIANT_PROPERTY(@p1,'Scale')<>4
)
BEGIN
RAISERROR('Wrong Data Type used when calling procedure!',16,10);
RETURN -1;
END;
RAISERROR('Correct Data Type used when calling procedure!',0,0);
END;
GO
RAISERROR('Calling with INT:',0,0);
DECLARE @i INT = 1;
EXEC dbo.Decimal74Only @p1 = @i;
GO
RAISERROR('Calling with DECIMAL(7,4):',0,0);
DECLARE @d74 DECIMAL(7,4) = 1;
EXEC dbo.Decimal74Only @p1 = @d74;
GO
我關心的方法參數;而不是將價值傳遞給數據庫。 – Lijo