SQLCommand.Parameters.Add - 如何给出十进制值的大小?

SQLCommand.Parameters.Add - How to give decimal value size?

你会如何指定这个:

Decimal(18,2)

在此:

SqlComm.Parameters.Add("@myValue", SqlDbType.Decimal, 0, "myValue");

目前我已经从设计端属性定义了precision = 2。我只是好奇如何从代码中实现这一点。谢谢

没有 Add 的重载可让您直接设置小数精度,因此您需要创建一个 SQlParameter 对象并将其添加到集合中:

SqlParameter param = new SqlParameter("@myValue", SqlDbType.Decimal);
param.SourceColumn = "myValue";
param.Precision = 18;
param.Scale = 2;
SqlComm.Parameters.Add(param);

或者在添加参数后保留对参数的引用:

SqlParameter param = SqlComm.Parameters.Add("@myValue", SqlDbType.Decimal, 0, "myValue");
param.Precision = 18;
param.Scale = 2;

或者使用参数构造函数:

SqlComm.Parameters.Add(new SqlParameter(
    parameterName = "@myValue", 
    dbType = SqlDbType.Decimal,
    precision = 18,
    scale = 2,
    sourceColumn = "myValue"));
var cmd = new SqlCommand()
SetDecimalParameter(cmd.Parameters.Add("@paramName", SqlDbType.Decimal), 18, 2).Value = 12.34;

SqlParameter SetDecimalParameter(SqlParameter parameter, byte precision, byte scale) {
            parameter.Precision = precision;
            parameter.Scale = scale;
            return parameter;
        }