[英]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.