Oracle efficient paging storage process:
- Create Or ReplacePackage JT_P_pageIs
- Type type_curIsRefCursor;-- Defines the cursor variable used to return the record set
- ProcedurePagination (PindexInNumber,-- Index of the number of pages to be displayed, starting from 0
- PsqlInVarchar2,-- Query statement that generates paging data
- PsizeInNumber,-- Number of records displayed per page
- PcountOutNumber,-- Number of returned pages
- ProwcountOutNumber,-- Number of returned records
- V_curOutType_cur-- Returns the cursor of the paging data.
- );
- EndJT_P_page;
- Commit;
- -- Define the package subject
- Create Or ReplacePackage body JT_P_pageIs
- ProcedurePagination (PindexInNumber,-- Index of the number of pages to be displayed, starting from 0
- PsqlInVarchar2,-- Query statement that generates paging data
- PsizeInNumber,-- Number of records displayed per page
- PcountOutNumber,-- Number of returned pages
- ProwcountOutNumber,-- Number of returned records
- V_curOutType_cur-- Returns the cursor of the paging data.
- )AS
- V_ SQL VARCHAR2 (1000 );
- V_Pbegin number;
- V_Pend number;
- Begin
- V_ SQL: ='Select count (*) from ('| Psql |')';
- ExecuteImmediate v_ SQLIntoProwcount;-- Calculate the total number of records
- Pcount: = ceil (Prowcount/Psize );-- Calculate the total number of pages
- -- Display any page content
- V_Pend: = Pindex * Psize + Psize;
- V_Pbegin: = v_Pend-Psize + 1;
- V_ SQL: ='Select * from (select rownum rn, t. * from ('| Psql |') T) where rn'| V_Pbegin |And'| V_Pend;
- OpenV_curForV_ SQL;
- EndPagination;
- EndJT_P_page;
- Commit;
- **************************************** *********************
- OracleParameter [] param = new OracleParameter [] {new OracleParameter ("Pindex", OracleType. Number), new OracleParameter ("Psql", OracleType.VarChar), New OracleParameter ("Psize", OracleType. Number), new OracleParameter ("Pcount", OracleType. Number), new OracleParameter ("Prowcount", OracleType. Number), new OracleParameter ("V_cur", OracleType.Cursor)};
- Param [0]. Value =Index;
- Param [1]. Value = SQL;
- Param [2]. Value = pageSize;
- Param [0]. Direction = ParameterDirection. Input;
- Param [1]. Direction = ParameterDirection. Input;
- Param [2]. Direction = ParameterDirection. Input;
- Param [3]. Direction = ParameterDirection.Output;
- Param [4]. Direction = ParameterDirection.Output;
- Param [5]. Direction = ParameterDirection.Output;
- DataSet ds = OracleHelper. ExecuteDataset (Form1.OracleConnString, CommandType. StoredProcedure,"JT_P_page.Pagination", Param );
- IntPcount =Int. Parse (param [3]. Value. ToString ());
- IntRecord =Int. Parse (param [4]. Value. ToString ());
- Lb_pcount.Text = pcount. ToString ();
- DataGridView1.DataSource = ds. Tables [0];