Nhibernate执行带输出参数的存储过程

可能会有业务逻辑问题而且会带输出 参数,可是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;


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值