小编Bor*_*oda的帖子

sqlDecimal到decimal clr存储过程无法将类型为'System.Data.SqlTypes.SqlDecimal'的对象强制转换为'System.IConvertible'

我是新手.我正在编写一个clr存储过程,它调用另一个存储过程来获取计算中使用的值.

存储过程返回int(我猜SqlInt32?表中的值的类型是int),然后需要将其转换为decimal.

这是我的代码:

public static int CalculateMyValues(SqlDecimal aMyValue, SqlString aMyValueType, out SqlDecimal aResult)
{
    aResult = 0;
    try
    {
        SqlConnection conn = new SqlConnection("context connection=true");
        SqlCommand cmd = new SqlCommand("sp_GetType", conn);
        cmd.Parameters.AddWithValue("@myValueType", aMyValueType);
        cmd.CommandType = CommandType.StoredProcedure;
        conn.Open();

        object type = cmd.ExecuteScalar();

        conn.Close();

        decimal typeForCalculation = Convert.ToDecimal(type);
        decimal value = Convert.ToDecimal(aMyValue); // **

        Calculations calc = new Calculations(); 
        decimal result = calc.DoCalculation(typeForCalculation, value);
Run Code Online (Sandbox Code Playgroud)

我得到一个例外(我认为看到******):

无法将类型为"System.Data.SqlTypes.SqlDecimal"的对象强制转换为"System.IConvertible".

有任何想法吗?谢谢.

c# sql clr stored-procedures

2
推荐指数
1
解决办法
6130
查看次数

标签 统计

c# ×1

clr ×1

sql ×1

stored-procedures ×1