当前位置:  开发笔记 > 编程语言 > 正文

从SQL查询返回参数

如何解决《从SQL查询返回参数》经验,为你挑选了1个好方法。

我试图运行一个SQL存储过程并从查询中返回一个值.我的语法抛出错误:

无法将类型'System.Data.SqlClient.SqlParameter'隐式转换为'decimal'

这是我的语法,我应该改变什么才能让它正常运行?

public Decimal ReturnValueFromQuery(string connectionString, string sqlQuery, int blah, DateTime d1, DateTime d2)
{
string cs = System.Configuration.ConfigurationManager.AppSettings[connectionString].ToString();
try
{
    using (SqlConnection conn = new SqlConnection(cs))
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = sqlQuery;
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@blah", SqlDbType.Int).Value = blah;
        cmd.Parameters.Add("@startDate", SqlDbType.Date).Value = d1;
        cmd.Parameters.Add("@endDate", SqlDbType.Date).Value = d2;
        var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int);
        returnParameter.Direction = ParameterDirection.ReturnValue;
        conn.Open();
        cmd.ExecuteNonQuery();
        return returnParameter;
    }
}
catch { }
}

Steve.. 6

你的方法说它将返回一个小数,写return returnParameter不可能,因为它不尊重你的方法的签名.

您应该将Valuereturn参数的属性转换为十进制值

return Convert.ToDecimal(returnParameter.Value);

但是我对你选择使用参数有一些困惑ParameterDirection.ReturnValue.正确写入(SqlDbType.Int)后,这些参数只能返回整数而不是小数.也许,您应该考虑一个参数,ParameterDirection.Output并将其传递给存储过程的调用列表

当然,如果你有一个真正的整数,那么也有可能将你的方法返回值更改为int.
最后我强烈建议删除任何空的catch块.当你遇到异常时,这些块是致命的,因为你从来不知道它.



1> Steve..:

你的方法说它将返回一个小数,写return returnParameter不可能,因为它不尊重你的方法的签名.

您应该将Valuereturn参数的属性转换为十进制值

return Convert.ToDecimal(returnParameter.Value);

但是我对你选择使用参数有一些困惑ParameterDirection.ReturnValue.正确写入(SqlDbType.Int)后,这些参数只能返回整数而不是小数.也许,您应该考虑一个参数,ParameterDirection.Output并将其传递给存储过程的调用列表

当然,如果你有一个真正的整数,那么也有可能将你的方法返回值更改为int.
最后我强烈建议删除任何空的catch块.当你遇到异常时,这些块是致命的,因为你从来不知道它.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有