SqlParameter.Scale プロパティ


Value が解決される、小数点以下の桁数を取得または設定します。Gets or sets the number of decimal places to which Value is resolved.

 property System::Byte Scale { System::Byte get(); void set(System::Byte value); };
public byte Scale { get; set; }
public byte Scale { get; set; }
member this.Scale : byte with get, set
Public Property Scale As Byte



Value が解決される、小数点以下の桁数。The number of decimal places to which Value is resolved. 既定値は 0 です。The default is 0.



次の例では、SqlParameter を作成し、そのプロパティの一部を設定します。The following example creates a SqlParameter and sets some of its properties.

static void CreateSqlParameterPrecisionScale()
    SqlParameter parameter = new SqlParameter("Price", SqlDbType.Decimal);
    parameter.Value = 3.1416;
    parameter.Precision = 8;
    parameter.Scale = 4;
Private Sub CreateSqlParameterPrecisionScale()
    Dim parameter As New SqlParameter("Price", SqlDbType.Decimal)
    parameter.Value = 3.1416
    parameter.Precision = 8
    parameter.Scale = 4
End Sub


Scale プロパティは、DecimalDateTime2DateTimeOffset、または TimeSqlDbType を持つパラメーターによって使用されます。The Scale property is used by parameters that have a SqlDbType of Decimal, DateTime2, DateTimeOffset, or Time.


Scale プロパティが明示的に指定されておらず、サーバー上のデータがスケール 0 (既定値) に適さない場合は、データが切り捨てられる可能性があります。Data may be truncated if the Scale property is not explicitly specified and the data on the server does not fit in scale 0 (the default).
DateTime2 の種類の場合、scale 0 (既定値) は datetime2 (7) として渡されます。For the DateTime2 type, scale 0 (the default) will be passed as datetime2(7). 現在、パラメーターを datetime2 (0) として送信する方法はありません。There is currently no way to send a parameter as datetime2(0). 1-7 を予想どおりにスケーリングします。Scales 1-7 work as expected. この問題は、DateTimeOffsetTime にも当てはまります。This problem applies to DateTimeOffset and Time as well.

パラメーター値から推論できるため、入力パラメーターの Precision および Scale プロパティの値を指定する必要はありません。You do not need to specify values for the Precision and Scale properties for input parameters, as they can be inferred from the parameter value. PrecisionScale は、出力パラメーターと、特定の有効桁数と小数点以下桁数で null 値を指定するなど、値を指定せずにパラメーターの完全なメタデータを指定する必要があるシナリオに必要です。Precision and Scale are required for output parameters and for scenarios where you need to specify complete metadata for a parameter without indicating a value, such as specifying a null value with a specific precision and scale.


このプロパティを使用して、データベースに渡されるデータを強制的に変換することはできません。Use of this property to coerce data passed to the database is not supported. データベースに渡す前にデータを丸め、切り捨て、または強制するには、パラメーターの Value プロパティに値を割り当てる前に、System 名前空間の一部である Math クラスを使用します。To round, truncate, or otherwise coerce data before passing it to the database, use the Math class that is part of the System namespace prior to assigning a value to the parameter's Value property.


.NET Framework バージョン1.0 に含まれている .NET Framework データプロバイダーでは、Decimal パラメーター値の Precision または Scale は検証されません。.NET Framework data providers that are included with the .NET Framework version 1.0 do not verify the Precision or Scale of Decimal parameter values. これにより、データソースに切り捨てられたデータが挿入される可能性があります。This can cause truncated data to be inserted at the data source. .NET Framework バージョン1.0 を使用している場合は、パラメーター値を設定する前に Decimal 値の PrecisionSqlParameter を検証します。If you are using .NET Framework version 1.0, validate the Precision and SqlParameter of Decimal values before setting the parameter value. Decimal パラメーターの小数点以下桁数を超える Scale 値は切り捨てられます。Scale values that exceed the Decimal parameter scale are still truncated.