使用nhibernate调用存储过程实现多返回值

首先说明一下,实际的调用并不真正是nhibernate提供的功能。而只是入口处在nhibernate的SessionFactory,所以这个标题有点不太对题。

具体实现:

存储过程是oracle的,过程如下:

create or replace procedure TestAA(abc varchar2,  ccd out varchar2,  op out varchar2)
as
begin
insert into aa values(abc);
ccd := 'chang';
op := 'moring';
commit;
end;
C#调用代码如下:

        public void MyProcExec(string str, out string ccd, out string op)
        {
            IDbCommand cmd = SessionFactory.OpenSession().Connection.CreateCommand();

            cmd.CommandText = "testaa";
            cmd.CommandType = CommandType.StoredProcedure;
            IDbDataParameter p = cmd.CreateParameter();
            IDbDataParameter p1 = cmd.CreateParameter();
            IDbDataParameter p2 = cmd.CreateParameter();
            p.ParameterName = "abc";
            p.Value = str;
            p1.ParameterName = "ccd";
            p1.Size = 10;
            p1.Direction = ParameterDirection.Output;
            p2.ParameterName = "op";
            p2.Size = 10;
            p2.Direction = ParameterDirection.Output;

            cmd.Parameters.Add(p);
            cmd.Parameters.Add(p1);
            cmd.Parameters.Add(p2);

            cmd.ExecuteNonQuery();
            ccd = p1.Value.ToString();
            op = p2.Value.ToString();
            //throw new NotImplementedException();

        }
这种方法是在实在找不到nhibernate调用存储过程,得到返回值的情况下,同时在网上没有找到有效的解决办法的情况下,使用nhibernate的连接,自己创建命令来实现调用存储过程,达到多返回值的目的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值