我有这个调用存储过程的方法。我的问题是它不会返回一行,但它会打印一条消息。我试图将该打印消息捕获到变量中。我的问题是我之前从未使用过InfoMessage
而且我在网上查看了它,对于我的生活,我似乎无法理解它。有人可以帮助我或指出我正确的方向吗?
这是我的代码:
public List<showWhatClass> showWhatMethod(string deviceWhat, int tagWhat, Decimal latit, Decimal longit, int Process, string CallNext, int CallNextVar)
{
showWhatCell = new List<showWhatClass>();
try
{
using (connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand("iosShowWhat", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@DeviceId", deviceWhat);
command.Parameters.AddWithValue("@TagId", tagWhat);
command.Parameters.AddWithValue("@Latitude", latit);
command.Parameters.AddWithValue("@Longitude", longit);
command.Parameters.AddWithValue("@Process", Process);
command.Parameters.AddWithValue("@CallNext", CallNext);
command.Parameters.AddWithValue("@CallNextVar", CallNextVar);
connection.Open();
/*SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
showWhatClass item = new showWhatClass();
item.CallNext = reader.GetValue(0).ToString();
item.CallNextVar = (int)reader.GetValue(1);
showWhatCell.Add(item);
}*/
}
}
}
finally
{
connection.Close();
}
return showWhatCell;
}
我尝试了以下内容:
connection.Open();
connection.InfoMessage += delegate(object sender, SqlInfoMessageEventArgs e)
{
showWhatClass item = new showWhatClass();
item.CallNext += "\n" + e.Message;
showWhatCell.Add(item);
};
什么都不返回。
答案 0 :(得分:1)
您可以使用output
参数从存储过程中获取消息并在代码中使用它。
在存储过程中添加output
参数
@name varchar(20) output
然后设置此参数的值
set @name='Mairaj Ahmad Minhas'
现在,在调用存储过程时,在代码中添加另一个这样的参数
command.Parameters.Add("@name", SqlDbType.VarChar, 20);
command.Parameters["@name"].Direction = ParameterDirection.Output;
在调用存储过程之后,执行此操作以从此参数获取值。
string name = command.Parameters["@name"].Value.ToString();