SqlParameter.Scale プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Valueが解決される小数点以下の桁数を取得または設定します。
public:
property System::Byte Scale { System::Byte get(); void set(System::Byte value); };
public byte Scale { get; set; }
[System.Data.DataSysDescription("DbDataParameter_Scale")]
public byte Scale { get; set; }
member this.Scale : byte with get, set
[<System.Data.DataSysDescription("DbDataParameter_Scale")>]
member this.Scale : byte with get, set
Public Property Scale As Byte
プロパティ値
Valueが解決される小数点以下の桁数。 既定値は 0 です。
実装
- 属性
例
次の例では、 SqlParameter を作成し、そのプロパティの一部を設定します。
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 プロパティは、SqlDbType、Decimal、DateTime2、またはDateTimeOffsetのTimeを持つパラメーターによって使用されます。
Warning
Scale プロパティが明示的に指定されておらず、サーバー上のデータがスケール 0 (既定値) に収まらない場合は、データが切り捨てられる可能性があります。
DateTime2型の場合、スケール 0 (既定値) は datetime2(7) として渡されます。 現在、datetime2(0) としてパラメーターを送信する方法はありません。 1 から 7 の作業を想定どおりにスケーリングします。
この問題は、 DateTimeOffset と Time にも当てはまります。
パラメーター値から推論できるため、入力パラメーターの Precision プロパティと Scale プロパティの値を指定する必要はありません。
Precision および Scale は、出力パラメーターと、特定の有効桁数と小数点以下桁数で null 値を指定するなど、値を示さずにパラメーターの完全なメタデータを指定する必要があるシナリオで必要です。
Note
このプロパティを使用して、データベースに渡されるデータを強制することはできません。 データをデータベースに渡す前に丸めたり、切り捨てたり、強制したりするには、パラメーターの Math プロパティに値を割り当てる前に、System名前空間の一部である Value クラスを使用します。
Note
.NET Framework バージョン 1.0 に含まれる .NET Framework データ プロバイダーは、パラメーター値のPrecisionまたはScaleDecimal検証しません。 これにより、切り捨てられたデータがデータ ソースに挿入される可能性があります。 .NET Framework バージョン 1.0 を使用している場合は、パラメーター値を設定する前に、Precision値のSqlParameterとDecimalを検証します。 Scale Decimalパラメータースケールを超える値は切り捨てられます。