zoukankan      html  css  js  c++  java
  • Oracle创建包、存储过程,及C#中调用

    create or replace package body PK_DataTransfer is

    --  积分卡合并                            2009-7-14
        procedure p_MemberMergence(s_SMemberID in nvarchar2,s_TMemberID in nvarchar2,n_Usersn in number) is
        begin
             update plus.tsell s
                set s.memberid=s_TMemberID,s.lastupdatedby=n_Usersn,s.lastupdatedon=sysdate
              where s.memberid=s_SMemberID;

             update plus.tsellrgoods r
                set r.memberid=s_TMemberID,r.lastupdatedby=n_Usersn,r.lastupdatedon=sysdate
              where r.memberid=s_SMemberID;

             update plus.tpointmanage p
                set p.ghmembersn=(select ghmembersn
                                    from tmember
                                   where memberid=s_TMemberID)
                   ,p.lastupdatedby=n_Usersn,p.lastupdatedon=sysdate
             where p.ghmembersn=(select ghmembersn
                                   from tmember
                                  where memberid=s_SMemberID);

             update plus.tmember m
                set m.mpointsum=nvl(m.mpointsum,0)+(select mpointsum
                                                      from plus.tmember a
                                                     where a.memberid=s_SMemberID)
                   ,m.lastupdatedby=n_Usersn,m.lastupdatedon=sysdate
              where m.memberid=s_TMemberID;

             update plus.tmember m
                set m.flag='*',m.pointsum=0,m.amountsum=0,m.lastupdatedby=n_Usersn,m.lastupdatedon=sysdate
              where m.memberid=s_SMemberID;

             commit;
        end;

    C#中执行Oracle中的存储过程
     OracleParameter[] pms={new OracleParameter("s_SMemberID",OracleType.NVarChar,50),
                new OracleParameter("s_TMemberID",OracleType.NVarChar,50),
                new OracleParameter("n_Usersn",OracleType.Number)
               };
        pms[0].Value=ds.Tables[0].Rows[0][0].ToString();
        pms[0].Direction=ParameterDirection.Input;
        pms[1].Value=ds.Tables[0].Rows[0][1].ToString();
        pms[1].Direction=ParameterDirection.Input;
        pms[2].Value=Convert.ToInt64(this.Session["UserId"].ToString());
        pms[2].Direction=ParameterDirection.Input;
        dboperReq.RunProcedure("PK_DataTransfer.p_MemberMergence",pms);

    public void RunProcedure(string storedProcName,OracleParameter[] parameters)
      {
       OracleConnection oracleconn = new OracleConnection() ;
       OracleCommand oraclecmd = new OracleCommand() ;
       oracleconn.ConnectionString =ConfigurationSettings.AppSettings["DBConnfortrans"] ;
       oraclecmd.Connection = oracleconn ;
       oracleconn.Open() ;   
       OracleTransaction otrans=oracleconn.BeginTransaction();         
       
       try
       {
        oraclecmd.Transaction=otrans;
        oraclecmd.CommandText=storedProcName;//声明存储过程名
        oraclecmd.CommandType=CommandType.StoredProcedure;
        foreach(OracleParameter parameter in parameters)
        {
         oraclecmd.Parameters.Add(parameter);
        }
        oraclecmd.ExecuteNonQuery();//执行存储过程
        otrans.Commit();
        oraclecmd.Dispose();
        oracleconn.Dispose();
       }
       catch(Exception err)
       {
        otrans.Rollback();
        oraclecmd.Dispose();
        oracleconn.Dispose();
        throw err ;
       }
      }

  • 相关阅读:
    Android跨进程通信AIDL服务*
    Android跨进程通信广播(Broadcast)*
    Android跨进程通信Content Provider*
    Android跨进程通信访问其他应用程序的Activity*
    Android RecyclerView实现加载多种条目类型*
    Android ListView多布局*
    Android屏幕横竖屏切换和生命周期管理的详细总结*
    Android中的asserts和res/raw资源目录*
    Android系统服务 —— WMS与AMS*
    Android中为什么主线程不会因为Looper.loop()方法造成阻塞
  • 原文地址:https://www.cnblogs.com/jameshappy/p/1534773.html
Copyright © 2011-2022 走看看