可能会有业务逻辑问题而且会带输出 参数,可是nhibernate好像不支持out 配置(我没找到不知道有没有)换了个方法来执行
//user_ID in integer,
// user_Name in varchar2,
// user_Pwd in varchar2,
// msg out varchar2
factoryImp = factory as ISessionFactoryImplementor;
using (IDbConnection con = factory.OpenSession().Connection)
{
using (IDbCommand cmd = con.CreateCommand())
{
IDbTransaction trans = con.BeginTransaction();
cmd.CommandText = "apps.pkg_Users.Op_AddUser";
cmd.CommandType = CommandType.StoredProcedure;
IDbDataParameter pars0 = cmd.CreateParameter();
pars0.DbType = DbType.Int32;
pars0.Direction = ParameterDirection.Input;
pars0.Value = 12;
pars0.ParameterName = "user_ID";
cmd.Parameters.Add(pars0);
IDbDataParameter pars1 = cmd.CreateParameter();
pars1.DbType = DbType.String;
pars1.Direction = ParameterDirection.Input;
pars1.Value = 12;
pars1.ParameterName = "user_Name";
cmd.Parameters.Add(pars1);
IDbDataParameter pars2 = cmd.CreateParameter();
pars2.DbType = DbType.String;
pars2.Direction = ParameterDirection.Input;
pars2.Value = 12;
pars2.ParameterName = "user_Pwd";
cmd.Parameters.Add(pars2);
IDbDataParameter pars3 = cmd.CreateParameter();
pars3.DbType = DbType.String;
pars3.Direction = ParameterDirection.Output;
pars3.ParameterName = "msg";
pars3.Size = 100;
cmd.Parameters.Add(pars3);
cmd.ExecuteNonQuery();
if (pars3.Value.ToString() == "Y")
trans.Commit();
else
trans.Rollback();
}create or replace package body pkg_Users as
procedure query_UserByID(cur_no out curs, user_ID in integer) as
begin
open cur_no for
select * from apps.users t where t.id > user_id;
end;
procedure Op_AddUser(
user_ID in integer,
user_Name in varchar2,
user_Pwd in varchar2,
msg out varchar2) as
begin
msg:='Y';
insert into apps.users
(id, user_name, user_pwd)
values
(user_ID, user_Name, user_Pwd);
exception
when others then
rollback;
msg := 'N';
end;
end;
create or replace package pkg_Users as
type curs is ref cursor;
procedure query_UserByID(cur_no out curs, user_ID in integer);
procedure Op_AddUser(
user_ID in integer,
user_Name in varchar2,
user_Pwd in varchar2,
msg out varchar2);
end;
本文介绍如何利用NHibernate框架执行带有输出参数的存储过程,并通过实例展示了具体实现方法。

1090

被折叠的 条评论
为什么被折叠?



