Oracle存储过程例子

Dal.cs
OracleCommand myCmd = new OracleCommand();   --实例化
                myCmd.CommandType = CommandType.StoredProcedure; ---存储过程名称
                myCmd.CommandText = "PK_APAR.GET_ORG_TRADING_RECORD";  ---存储过程名称
                myCmd.Parameters.Add("V_ORG_ID", OracleDbType.Long).Value = orgId;  --参数
                myCmd.Parameters.Add("V_START_TIME", OracleDbType.Date).Value = StartTime;  --参数
                myCmd.Parameters.Add("V_END_TIME", OracleDbType.Date).Value = EndTime;   --参数
                myCmd.Parameters.Add("V_DIRECTION", OracleDbType.Varchar2).Value = direction;   --参数
                myCmd.Parameters.Add("L_RESULT", OracleDbType.RefCursor).Direction = ParameterDirection.Output;   --输出参数
                myCmd.Parameters.Add("RETURN_CODE", OracleDbType.Int64).Direction = ParameterDirection.Output;   --输出参数
                myCmd.Parameters.Add("RETURN_TEXT", OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output; --输出参数
                DataSet ds = Utilities.FillData(myCmd);
                return ds;

Utilities.cs
public static DataSet FillData(Oracle.DataAccess.Client.OracleCommand myCMD)
        {
            return FillData(myCMD,ConfigurationSettings.AppSettings["CenterDBConnStr"] --数据库连接符);
        }


public static DataSet FillData(Oracle.DataAccess.Client.OracleCommand myCMD,string connectString)
        {
            Oracle.DataAccess.Client.OracleConnection myConn = new Oracle.DataAccess.Client.OracleConnection(connectString);            

            myConn.Open();

            Oracle.DataAccess.Client.OracleTransaction trans = myConn.BeginTransaction();

            myCMD.Connection = myConn;
            

            Oracle.DataAccess.Client.OracleDataAdapter myAdapter = new Oracle.DataAccess.Client.OracleDataAdapter(myCMD);

            DataSet myData = new DataSet();

            try
            {

                myAdapter.Fill(myData);

                trans.Commit();
            }
            catch(Exception ex)
            {
                throw new Exception(ex.Message);                     
            }
            finally
            {
                if( ConnectionState.Open == myConn.State )
                {
                    myConn.Close();
                }
            }

            return myData;
        }


WebCofing
<!--用户数据库连接--&gt
   

PROCEDURE GET_ORG_TRADING_RECORD(V_ORG_ID     IN TP_ORG.ORG_ID%TYPE,
                                   V_START_TIME IN TA_AABANK_TRADE.TRADE_TIME%TYPE,
                                   V_END_TIME   IN TA_AABANK_TRADE.TRADE_TIME%TYPE,
                                   V_DIRECTION  IN varchar2,
                                   L_RESULT     OUT REFCURSOR,
                                   RETURN_CODE  OUT NUMBER,
                                   RETURN_TEXT  OUT VARCHAR2) IS
  BEGIN
    OPEN L_RESULT FOR
      SELECT b.account_name,
             a.trade_time,
             d.base_code_name,
             a.trade_direction,
             a.trade_fee,
             a.account_balance,
             a.work_number,
             a.trade_remark
        from TA_AABANK_TRADE a, ta_aabank b, tp_org c, ta_base_code d
       where a.aabank_id = b.aabank_id
         and b.aabank_id = c.aabank_id
         and a.trade_type_id = d.base_code_id
         and c.org_id = V_ORG_ID
         and a.trade_direction like V_DIRECTION
         and a.trade_time between V_START_TIME and V_END_TIME;
    RETURN_CODE := 0;
    RETURN_TEXT := '成功!';
  EXCEPTION
    WHEN OTHERS THEN
      ROLLBACK;
      RETURN_CODE := 1;
      RETURN_TEXT := SQLERRM || '失败!';
  END GET_ORG_TRADING_RECORD;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29406868/viewspace-1064265/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29406868/viewspace-1064265/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值