zoukankan      html  css  js  c++  java
  • C#调用存储过程

    1. --注意,在Oracle,存储过程需要放在包下面  
    2. create or replace package PKG_split_Page is  
    3. TYPE p_cur1 IS REF CURSOR;  
    4. PROCEDURE proc_split_page  
    5. (  
    6.   rowcountPerPage NUMBER,  --每页面记录条数  
    7.   indexNowPage NUMBER,       --当前页码  
    8.   tabName VARCHAR2,             --分页表名  
    9.   totalRows OUT NUMBER,        --总记录数  
    10.   totalPages OUT NUMBER,        --总页数  
    11.   p_cursor OUT PKG_split_Page.p_cur1     --游标,用于返回结果集  
    12.   
    13. );  
    14. end PKG_split_Page;  

    C#调用存储过程代码如下:

      1. #region 分页代码(返回数据表、总条数、总页数等)  
      2. /// <summary>  
      3. /// 执行分页   
      4. /// </summary>  
      5. /// <param name="tableName">需分页表名(select查询语句)</param>  
      6. /// <param name="paeSize">每页记录数</param>  
      7. /// <param name="indexNowPage">当前页码</param>  
      8. /// <param name="totalRows">引用参数,总记录数</param>  
      9. /// <param name="totalPages">引用参数,总页数</param>  
      10. /// <returns>分页结果集</returns>  
      11. public DataTable Paging(string tableName, int paeSize, int indexNowPage, ref int totalRows, ref int totalPages)  
      12. {  
      13.     try  
      14.     {  
      15.         //打开连接  
      16.         OpenOracleConnection();  
      17.         //定义OracleCommand对象,设置命令类型为存储过程  
      18.         OracleCommand pOracleCMD = new OracleCommand("pkg_split_page.proc_split_page", conn);//Oracle里面的(包.存储过程)  
      19.         pOracleCMD.CommandType = CommandType.StoredProcedure;//设置执行类型为存储过程  
      20.           
      21.         //根据存储过程的参数个数及类型生成参数对象  
      22.         OracleParameter p1 = new OracleParameter("rowCountPerPage", OracleType.Number);//rowcountPerPage——每页显示的条数  
      23.         OracleParameter p2 = new OracleParameter("indexNowPage", OracleType.Number);//indexNowPage——当前页码  
      24.         OracleParameter p3 = new OracleParameter("tabName", OracleType.VarChar);//tabName——表名  
      25.         OracleParameter p4 = new OracleParameter("totalRows", OracleType.Number);//totalRows——总记录数(output)  
      26.         OracleParameter p5 = new OracleParameter("totalPages", OracleType.Int16);//totalPages——总页数(output)  
      27.         OracleParameter p6 = new OracleParameter("p_cursor", OracleType.Cursor);  
      28.   
      29.         //设置参数的输入输出类型,默认为输入  
      30.         p1.Direction = ParameterDirection.Input;  
      31.         p2.Direction = ParameterDirection.Input;  
      32.         p3.Direction = ParameterDirection.Input;  
      33.         p4.Direction = ParameterDirection.Output;  
      34.         p5.Direction = ParameterDirection.Output;  
      35.         p6.Direction = ParameterDirection.Output;  
      36.   
      37.         //对输入参数定义初值,输出参数不必赋值.  
      38.         p1.Value = paeSize;  
      39.         p2.Value = indexNowPage;  
      40.         p3.Value = tableName;  
      41.   
      42.         //按照存储过程参数顺序把参数依次加入到OracleCommand对象参数集合中  
      43.         pOracleCMD.Parameters.Add(p1);  
      44.         pOracleCMD.Parameters.Add(p2);  
      45.         pOracleCMD.Parameters.Add(p3);  
      46.         pOracleCMD.Parameters.Add(p4);  
      47.         pOracleCMD.Parameters.Add(p5);  
      48.         pOracleCMD.Parameters.Add(p6);  
      49.   
      50.         //执行,把分页结果集填入datatable中  
      51.         OracleDataAdapter pOracleDataAdapter = new OracleDataAdapter(pOracleCMD);  
      52.         DataTable datatable = new DataTable();  
      53.         pOracleDataAdapter.Fill(datatable);  
      54.   
      55.         //在执行结束后,从存储过程输出参数中取得相应的值放入引用参数中以供程序调用  
      56.         totalRows = int.Parse(p4.Value.ToString());  
      57.         totalPages = int.Parse(p5.Value.ToString());  
      58.   
      59.         //关闭连接  
      60.         CloseOracleConnection();  
      61.   
      62.         return datatable;  
      63.     }  
      64.     catch (Exception ex)  
      65.     {  
      66.         string error = ex.ToString();  
      67.         return null;  
      68.     }  
      69.   
      70. }  
      71. #endregion      
      72.  
      73. #region 打开连接  
      74. /// <summary>  
      75. /// 关闭连接  
      76. /// </summary>  
      77. private void CloseOracleConnection()  
      78. {  
      79.     if (conn.State == ConnectionState.Open)  
      80.     {  
      81.         conn.Close();  
      82.     }  
      83. }  
      84. #endregion  
      85.  
      86. #region 关闭连接  
      87. /// <summary>  
      88. /// 打开连接  
      89. /// </summary>  
      90. private void OpenOracleConnection()  
      91. {  
      92.     if (conn.State == ConnectionState.Closed)  
      93.     {  
      94.         conn.Open();  
      95.     }  
      96. }  
      97. #endregion  
  • 相关阅读:
    pthread线程内存布局
    用户空间实现线程 内核实现线程 线程的调度
    堆 虚拟内存
    Operating System-Thread(3)用户空间和内核空间实现线程
    Linux进程地址空间与虚拟内存
    虚拟地址
    物理内存,虚拟内存,进程地址空间
    CPU中MMU的作用
    进程地址空间与虚拟存储空间的理解
    虚拟地址空间
  • 原文地址:https://www.cnblogs.com/yuloe2012/p/2814128.html
Copyright © 2011-2022 走看看