簡體   English   中英

從SQL查詢返回參數

[英]Return Parameter From SQL Query

我試圖運行一個sql存儲過程,並從查詢中返回一個值。 我的語法拋出以下錯誤:

無法將類型'System.Data.SqlClient.SqlParameter'隱式轉換為'十進制'

這是我的語法,為了使其正常運行,我應該更改什么?

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 { }
}

您的方法說它將返回一個小數,不可能寫return returnParameter因為它不尊重方法的簽名。

您應該將return參數的Value屬性轉換為十進制值

return Convert.ToDecimal(returnParameter.Value);

但是我對您選擇將參數與ParameterDirection.ReturnValue一起使用感到有些困惑。 正確編寫( SqlDbType.Int )后,這些參數只能返回整數,而不能返回小數。 也許,您應該考慮使用ParameterDirection.Output並將其傳遞到存儲過程的調用列表中

當然,如果您確實有一個整數,那么也可以將您的方法返回值更改為int。
最后,我強烈建議刪除任何空的catch塊。 當您有異常時,這些塊是致命的,因為您對其一無所知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM