Enterprise Library 2.0系列:如何得到存储过程的 ReturnValue 值?
最近在学习Enterprise Library 2.0,在博客园看到了Terry和SHY520的文章,学到了很多知识。很感谢他们能把自己所学的知识分享给大家。以后,我也要养成一个写日志的好习惯,每天进步一点!
感谢SHY520的日志《使用Data Access Application Block 得到存储过程的返回值》。
ALTER PROCEDURE dbo.GetSumValue
(
@IX int,
@IY int,
@IZ int
)
AS
Return (@IX + @IY + @IZ);
(
@IX int,
@IY int,
@IZ int
)
AS
Return (@IX + @IY + @IZ);
Database db = DatabaseFactory.CreateDatabase("CS_QuickStarts");
DbCommand cmd = db.GetStoredProcCommand("GetSumValue");
db.AddInParameter(cmd, "IX", DbType.Int32, 20);
db.AddInParameter(cmd, "IY", DbType.Int32, 10);
db.AddInParameter(cmd, "IZ", DbType.Int32, 25); // 用于普通添加类型的参数,参数名称不需要加“@”前缀
db.AddParameter(cmd, "@ReturnVal", DbType.String, ParameterDirection.ReturnValue, "", DataRowVersion.Current, null); // 用于返回值的参数名称,需要加@前缀
db.ExecuteNonQuery(cmd); // 必须使用 ExecuteNonQuery 方法才可以得到 ReturnValue 值,不能使用 ExecuteReader 等
int iReturnVal = Convert.ToInt32(cmd.Parameters["@ReturnVal"].Value);
Response.Write("<br />返回值:" + iReturnVal);
Response.End();
DbCommand cmd = db.GetStoredProcCommand("GetSumValue");
db.AddInParameter(cmd, "IX", DbType.Int32, 20);
db.AddInParameter(cmd, "IY", DbType.Int32, 10);
db.AddInParameter(cmd, "IZ", DbType.Int32, 25); // 用于普通添加类型的参数,参数名称不需要加“@”前缀
db.AddParameter(cmd, "@ReturnVal", DbType.String, ParameterDirection.ReturnValue, "", DataRowVersion.Current, null); // 用于返回值的参数名称,需要加@前缀
db.ExecuteNonQuery(cmd); // 必须使用 ExecuteNonQuery 方法才可以得到 ReturnValue 值,不能使用 ExecuteReader 等
int iReturnVal = Convert.ToInt32(cmd.Parameters["@ReturnVal"].Value);
Response.Write("<br />返回值:" + iReturnVal);
Response.End();
感谢SHY520的日志《使用Data Access Application Block 得到存储过程的返回值》。