NHibernate 执行存储过程
前置条件:
已经获取了ISession类型的对象: this._session
已经建立一个存储过程: proc_name,
该存储过程有两个参数:
para1:varchar 类型,传入参数
para2:number类型,传出参数
int result = 0;
IDbCommand cmd = this._session.Connection.CreateCommand();
cmd.CommandText = "proc_name";
cmd.CommandType = CommandType.StoredProcedure;
this._session.Transaction.Enlist(cmd); //用于事务,如果在一个NHibernate本地事务中执行存储过程,
//需用这个事物初始化一下IDbCommand ,从而把这个IDbCommand 对象加入到事务处理中
IDbDataParameter parameter = cmd.CreateParameter();
parameter.ParameterName = "para1";
parameter.DbType=DbType.String;
parameter.Value = so;
cmd.Parameters.Add(parameter);
IDbDataParameter pararesult= cmd.CreateParameter();
pararesult.ParameterName = "para2";
pararesult.Direction = ParameterDirection.Output;
pararesult.Value = result;
cmd.Parameters.Add(pararesult);
cmd.ExecuteNonQuery();
return result;