以SQL Server2012提供的offset ..rows fetch next ..rows only爲例html
e.g.sql
表名:Tab1 ---------------------------------- ID Name 1 tblAttributeGroupDetail 2 tblAttributeGroup 3 tblAttribute ....... 50 tblBRItemTypeAppliesTo 51 tblBRItemProperties 52 tblBRItem 53 tblBRBusinessRule 54 Test
--建立分頁存儲過程 rTabByConditionfetch
USE [ExampleDB] GO if OBJECT_ID('rTabByCondition','P') is not null drop procedure rTabByCondition GO create procedure [dbo].[rTabByCondition]( @PageCount int=1 --頁數 ,@PageSize int=10 --頁顯示記錄數 ,@Rowcount int=0 output --總記錄數 ) as set nocount on; declare @Rows int; select * from dbo.Tab1 order by ID offset (@PageCount-1)*@PageSize rows fetch next @PageSize rows only set @Rows=@@ROWCOUNT select @Rowcount=count(*) from dbo.Tab1; return @Rows go declare @i int,@j int exec @i=[rTabByCondition] @PageCount=6,@PageSize=10,@Rowcount=@j output select @i as "@Rowcount",@j as "Return_Value" go
顯示結果:this
--打開Visual Studio—建立項目—選擇【控制檯應用程序】spa
#region Directives using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; #endregion namespace SQLStoredProcedure2 { class Program { static void Main(string[] args) { SqlConnection thisConnection = new SqlConnection(@"Server=(Local)\SQL16;Integrated Security=True;Database=ExampleDB"); thisConnection.Open(); SqlCommand thisCommend = thisConnection.CreateCommand(); thisCommend.CommandType = CommandType.StoredProcedure; thisCommend.CommandText = "rTabByCondition"; thisCommend.Parameters.AddWithValue("@PageCount", "6");//頁數 thisCommend.Parameters.AddWithValue("@PageSize", "10");//頁顯示記錄數 SqlParameter paraOut = thisCommend.Parameters.Add("@Rowcount", SqlDbType.Int);//輸出參數定義 paraOut.Direction = ParameterDirection.Output; SqlParameter paraRet = thisCommend.Parameters.Add("return_value", SqlDbType.Int);//返回值 paraRet.Direction = ParameterDirection.ReturnValue; SqlDataReader thisReader = thisCommend.ExecuteReader(); while (thisReader.Read()) { Console.WriteLine("ID:{0}\tName:{1}", thisReader[0], thisReader[1]); } thisReader.Close(); thisConnection.Close(); Console.WriteLine("Rows:{0};\tReturn_Value:{1};", paraOut.Value, paraRet.Value); Console.WriteLine("Program finished,press Enter/Return to continue:"); Console.ReadLine(); } } }
顯示效果:code