改成
declare @TotalNum  int
--select @TotalNum = 0
select @TotalNum=count(*) from people_register 
select @TotalNum

解决方案 »

  1.   

    这是一个分页算法,有1百万记录,用@TotalNum=@TotalNum+1的速度好像比count(*)快。而且我的算法里面@TotalNum=@TotalNum+1是必须的。另外,能告诉我为什么这两个语句结果不是我想要的呢?
      

  2.   

    第一句执行后
    此时@TotalNum=1是吗?
      

  3.   

    全部的语句在这里:高手救我啊:
    函数的测试输入如下:
    pagesize=10
    currpage=1
    tablename=people_register
    uniquefield=peopleid
    where= --(一个空格不要输入)
    orderby=order by convert(datetime, Register_Date) asc 
    totalnum= --(查询分析器里面调试的时候选择空值)people_register表的结构如下:CREATE TABLE [dbo].[People_Register] (
    [peopleID] [int] IDENTITY (1, 1) NOT NULL ,
    [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [peopleGuid] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [Register_Date] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [Register_PersonTel] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [Register_PersonName] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL , 
    [cancelToNewPlace] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [cancleReason] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [cancleDate] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO
    CREATE PROCEDURE Select_Page
    @PageSize int, --页面大小
    @CurrPage int, --当前页号,从1开始
    @TableName nvarchar(100), --表名
    @UniqueField nvarchar(100), --一般为具有唯一值的关键字段,算法实现需要。注意:视该字段的类型需要适当修改代码。
    @Where nvarchar(1000), --搜索条件,例子: where fileld=value
    @OrderBy nvarchar(200), --排序字段,例子:order by name desc
    @TotalNum int output  --符合条件的记录总数
     
    AS
    declare @Previous int
    declare @i int
    declare @TopNum int
    declare @StrSql nvarchar(2000)
    declare @IdStr nvarchar(4000)
    declare @StrSqlTotal nvarchar(2000)set @TopNum = @PageSize * @CurrPage
    set @Previous = @TopNum - @PageSize
    select @StrSql = N'select top ' + str(@TopNum) + ' @i= @i+1,@IdStr=case when @i>' + str(@Previous) + ' then @IdStr+ltrim(rtrim(str(' + @UniqueField + ')))+N'','' else N'''' end from ' + @TableName + ' ' + @Where + ' ' + @OrderBy
    set @i = 0
    set @IdStr = N''
    exec sp_executesql @StrSql,N'@i int,@IdStr nvarchar(4000) output',@i,@IdStr output
    --去掉最后一个分隔符
    if len(rtrim(ltrim(@IdStr))) > 0
    begin
    select @IdStr = left(@IdStr,len(@IdStr)-1)
    end
    else
    begin
    select @IdStr = '1111111111'
    end
    select @StrSql = N'select * from ' + @TableName + N' where ' + @UniqueField + N' in ('+@IDStr+') ' + @OrderBy
    --得到符合搜索条件的记录总数,只是得到总数,不需要order by
    set @TotalNum = 0
    set @StrSqlTotal = N'select @TotalNum=@TotalNum+1 from ' + @TableName + ' ' + @Where + ' ' + @OrderBy
    exec sp_executesql @StrSqlTotal, N'@TotalNum int output',@TotalNum output
    --返回符合条件的记录exec(@StrSql)
    GO
      

  4.   

    在我的环境里面,第一句执行后是1-----------
    第一句执行后
    此时@TotalNum=1是吗?
      

  5.   

    declare @TotalNum int 
    exec Select_Page 10,1,'sysobjects','id',' ','order by id asc ',@TotalNum out
    select 记录总数=@TotalNum/*--结果:
    (所影响的行数为 10 行)记录总数
    ----------- 
    22(所影响的行数为 1 行)--*/
      

  6.   

    to:pxk (钻石很久远) 
    你一定要好好看看
    ----------------------A.只要執行一次(Start)-------------------------
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Select_Page]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
         drop proc [dbo].[Select_Page]
    goCREATE PROCEDURE Select_Page
    @PageSize int, --頁面大小
    @CurrPage int, --當前頁碼,從1開始
    @TableName nvarchar(100), --表名
    @UniqueField nvarchar(100), --一般為具有唯一值的關鍵字段,算法??需要。注意:視該字段的類型需要适當修改代碼。
    @Where nvarchar(1000), --搜索條件,例子: where fileld=value
    @OrderBy nvarchar(200), --排序字段,例子:order by name desc
    @TotalNum int output  --符合條件的記錄總數
     
    AS
    declare @Previous int
    declare @i int
    declare @TopNum int
    declare @StrSql nvarchar(2000)
    declare @IdStr nvarchar(4000)
    declare @StrSqlTotal nvarchar(2000)set @TopNum = @PageSize * @CurrPage
    set @Previous = @TopNum - @PageSize
    select @StrSql = N'select top ' + str(@TopNum) + ' @i= @i+1,@IdStr=case when @i>' + str(@Previous) + ' then @IdStr+ltrim(rtrim(str(' + @UniqueField + ')))+N'','' else N'''' end from ' + @TableName + ' ' + @Where + ' ' + @OrderBy
    set @i = 0
    set @IdStr = N''
    exec sp_executesql @StrSql,N'@i int,@IdStr nvarchar(4000) output',@i,@IdStr output
    --去掉最后一個分隔符
    if len(rtrim(ltrim(@IdStr))) > 0
    begin
    select @IdStr = left(@IdStr,len(@IdStr)-1)
    end
    else
    begin
    select @IdStr = '1111111111'
    end
    select @StrSql = N'select * from ' + @TableName + N' where ' + @UniqueField + N' in ('+@IDStr+') ' + @OrderBy
    --得到符合搜索條件的記錄總數,只是得到總數,不需要order by
    set @TotalNum = 0
    set @StrSqlTotal = N'select @TotalNum=@TotalNum+1 from ' + @TableName + ' ' + @Where + ' ' + @OrderBy
    exec sp_executesql @StrSqlTotal, N'@TotalNum int output',@TotalNum output
    --返回符合條件的記錄exec(@StrSql)
    GOif not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[People_Register]') and OBJECTPROPERTY(id, N'IsTable') = 1) 
    CREATE TABLE [dbo].[People_Register] (
    [peopleID] [int] IDENTITY (1, 1) NOT NULL ,
    [name] [nvarchar] (50)  NULL ,
    [peopleGuid] [nvarchar] (50)  NOT NULL ,
    [Register_Date] [nvarchar] (20)  NULL ,
    [Register_PersonTel] [nvarchar] (20)   NULL ,
    [Register_PersonName] [nvarchar] (10)   NULL , 
    [cancelToNewPlace] [nvarchar] (50)   NULL ,
    [cancleReason] [nvarchar] (100)   NULL ,
    [cancleDate] [nvarchar] (20)   NULL 
    ) ON [PRIMARY]
    GO
    -------測試數據-----------
    --drop table People_Registerinsert into People_Register(name,peopleGuid,Register_Date,Register_PersonTel,Register_PersonName,cancelToNewPlace,cancleReason,cancleDate)
    select '李一','1234567891','2004/1/1','6212661','wang1','001','AAA','2004/1/1' union all
    select '李二','1234567892','2004/1/2','6212662','wang2','002','AAB','2004/1/2' union all
    select '李三','1234567893','2004/1/3','6212663','wang3','003','AAC','2004/1/3' union all
    select '李四','1234567894','2004/1/4','6212664','wang4','004','AAD','2004/1/4' union all
    select '李五','1234567895','2004/1/5','6212665','wang5','005','AAE','2004/1/5' union all
    select '李六','1234567896','2004/1/6','6212666','wang6','006','AAF','2004/1/6' union all
    select '李七','1234567897','2004/1/7','6212667','wang7','007','AAG','2004/1/7' union all
    select '李八','1234567898','2004/1/8','6212668','wang8','008','AAH','2004/1/8' union all
    select '李九','1234567899','2004/1/9','6212669','want9','009','AAI', '2004/1/9' union all
    select '李十','1234567910','2004/1/9','6212669','want9','009','AAI', '2004/1/9' union all
    select '黃一','1234567881','2004/1/1','6212671','want1','001','AAA','2004/1/1' union all
    select '黃二','1234567882','2004/1/2','6212672','want2','002','AAB','2004/1/2' union all
    select '黃三','1234567883','2004/1/3','6212673','want3','003','AAC','2004/1/3' union all
    select '黃四','1234567884','2004/1/4','6212674','want4','004','AAD','2004/1/4' union all
    select '黃五','1234567885','2004/1/5','6212675','want5','005','AAE','2004/1/5' union all
    select '黃六','1234567886','2004/1/6','6212676','want6','006','AAF','2004/1/6' union all
    select '黃七','1234567887','2004/1/7','6212677','want7','007','AAG','2004/1/7' union all
    select '黃八','1234567888','2004/1/8','6212678','want8','008','AAH','2004/1/8' union all
    select '黃九','1234567889','2004/1/9','6212679','want9','009','AAI', '2004/1/9' union all
    select '黃十','1234567110','2004/1/9','6212679','want9','009','AAI', '2004/1/9' union all
    select '黃軍','1234567111','2004/1/9','6212679','want9','009','AAI', '2004/1/9' union all
    select '張一','1234567861','2004/1/1','6212661','zhang1','001','AAA','2004/1/1' union all
    select '張二','1234567862','2004/1/2','6212662','zhang2','002','AAB','2004/1/2' union all
    select '張三','1234567863','2004/1/3','6212663','zhang3','003','AAC','2004/1/3' union all
    select '張四','1234567864','2004/1/4','6212664','zhang4','004','AAD','2004/1/4' union all
    select '張五','1234567865','2004/1/5','6212665','zhang5','005','AAE','2004/1/5' union all
    select '張六','1234567866','2004/1/6','6212666','zhang6','006','AAF','2004/1/6' union all
    select '張七','1234567867','2004/1/7','6212667','zhang7','007','AAG','2004/1/7' union all
    select '張八','1234567868','2004/1/8','6212668','zhang8','008','AAH','2004/1/8' union all
    select '張九','1234567869','2004/1/9','6212669','zhang9','009','AAI', '2004/1/9' 
    -----------------------下列為測試數據--------------------
    select * from People_Register
    /*
    peopleID    name  peopleGuid        Register_Date  Register_PersonTel Register_PersonName  cancelToNewPlace cancleReason cancleDate
    1  李一 1234567891 2004/1/1 6212661 wang1 001 AAA 2004/1/1
    2  李二 1234567892 2004/1/2 6212662 wang2 002 AAB 2004/1/2
    3  李三 1234567893 2004/1/3 6212663 wang3 003 AAC 2004/1/3
    4  李四 1234567894 2004/1/4 6212664 wang4 004 AAD 2004/1/4
    5  李五 1234567895 2004/1/5 6212665 wang5 005 AAE 2004/1/5
    6  李六 1234567896 2004/1/6 6212666 wang6 006 AAF 2004/1/6
    7  李七 1234567897 2004/1/7 6212667 wang7 007 AAG 2004/1/7
    8  李八 1234567898 2004/1/8 6212668 wang8 008 AAH 2004/1/8
    9  李九 1234567899 2004/1/9 6212669 want9 009 AAI 2004/1/9
    10 李十 1234567910 2004/1/9 6212669 want9 009 AAI 2004/1/9
    11 黃一 1234567881 2004/1/1 6212671 want1 001 AAA 2004/1/1
    12 黃二 1234567882 2004/1/2 6212672 want2 002 AAB 2004/1/2
    13 黃三 1234567883 2004/1/3 6212673 want3 003 AAC 2004/1/3
    14 黃四 1234567884 2004/1/4 6212674 want4 004 AAD 2004/1/4
    15 黃五 1234567885 2004/1/5 6212675 want5 005 AAE 2004/1/5
    16 黃六 1234567886 2004/1/6 6212676 want6 006 AAF 2004/1/6
    17 黃七 1234567887 2004/1/7 6212677 want7 007 AAG 2004/1/7
    18 黃八 1234567888 2004/1/8 6212678 want8 008 AAH 2004/1/8
    19 黃九 1234567889 2004/1/9 6212679 want9 009 AAI 2004/1/9
    20 黃十 1234567110 2004/1/9 6212679 want9 009 AAI 2004/1/9
    21 黃軍 1234567111 2004/1/9 6212679 want9 009 AAI 2004/1/9
    22 張一 1234567861 2004/1/1 6212661 zhang1 001 AAA 2004/1/1
    23 張二 1234567862 2004/1/2 6212662 zhang2 002 AAB 2004/1/2
    24 張三 1234567863 2004/1/3 6212663 zhang3 003 AAC 2004/1/3
    25 張四 1234567864 2004/1/4 6212664 zhang4 004 AAD 2004/1/4
    26 張五 1234567865 2004/1/5 6212665 zhang5 005 AAE 2004/1/5
    27 張六 1234567866 2004/1/6 6212666 zhang6 006 AAF 2004/1/6
    28 張七 1234567867 2004/1/7 6212667 zhang7 007 AAG 2004/1/7
    29 張八 1234567868 2004/1/8 6212668 zhang8 008 AAH 2004/1/8
    30 張九 1234567869 2004/1/9 6212669 zhang9 009 AAI 2004/1/9*/
    ----------------------A.只要執行一次(End)-------------------------
      

  7.   

    ----------------------B.查詢語句(Start)-------------------------
    declare  @PageSize int, ---頁面大小
    @CurrPage int, --當前頁號,從1開始
    @TableName nvarchar(100), --表名
    @UniqueField nvarchar(100), --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where nvarchar(1000), --搜索條,例子: where fileld=value
    @OrderBy nvarchar(200), --排序字段,例子:order by name desc
                      @TotalNum int                               --符合条件的记录总数      select @PageSize=10, --頁面大小
    @CurrPage=1, --當前頁號,從1開始
    @TableName='people_register', --表名
    @UniqueField='peopleID', --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where='  ', --搜索條件,例子: where fileld=value
    @OrderBy=' order by convert(datetime, Register_Date) asc ' --排序字段,例子:order by name descexec Select_Page
    @PageSize, --頁面大小
    @CurrPage, --當前頁號,從1開始
    @TableName, --表名
    @UniqueField, --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where, --搜索條件,例子: where fileld=value
    @OrderBy, --排序字段,例子:order by name desc
    @TotalNum output  --符合条件的记录总数
    ----------沒有記錄-------------
    --結果錯誤
    /*
    peopleID    name  peopleGuid        Register_Date  Register_PersonTel Register_PersonName  cancelToNewPlace cancleReason cancleDate
    */select @TotalNum as 記錄數
    --結果錯誤
    /*
    記錄數
       1
    */select * from people_register order by convert(datetime, Register_Date) asc
    go
    /*
    peopleID    name  peopleGuid        Register_Date  Register_PersonTel Register_PersonName  cancelToNewPlace cancleReason cancleDate
    1  李一 1234567891 2004/1/1 6212661 wang1 001 AAA 2004/1/1
    11 黃一 1234567881 2004/1/1 6212671 want1 001 AAA 2004/1/1
    22 張一 1234567861 2004/1/1 6212661 zhang1 001 AAA 2004/1/1
    23 張二 1234567862 2004/1/2 6212662 zhang2 002 AAB 2004/1/2
    12 黃二 1234567882 2004/1/2 6212672 want2 002 AAB 2004/1/2
    2  李二 1234567892 2004/1/2 6212662 wang2 002 AAB 2004/1/2
    3  李三 1234567893 2004/1/3 6212663 wang3 003 AAC 2004/1/3
    13 黃三 1234567883 2004/1/3 6212673 want3 003 AAC 2004/1/3
    24 張三 1234567863 2004/1/3 6212663 zhang3 003 AAC 2004/1/3
    25 張四 1234567864 2004/1/4 6212664 zhang4 004 AAD 2004/1/4
    14 黃四 1234567884 2004/1/4 6212674 want4 004 AAD 2004/1/4
    4  李四 1234567894 2004/1/4 6212664 wang4 004 AAD 2004/1/4
    5  李五 1234567895 2004/1/5 6212665 wang5 005 AAE 2004/1/5
    15 黃五 1234567885 2004/1/5 6212675 want5 005 AAE 2004/1/5
    26 張五 1234567865 2004/1/5 6212665 zhang5 005 AAE 2004/1/5
    27 張六 1234567866 2004/1/6 6212666 zhang6 006 AAF 2004/1/6
    16 黃六 1234567886 2004/1/6 6212676 want6 006 AAF 2004/1/6
    6  李六 1234567896 2004/1/6 6212666 wang6 006 AAF 2004/1/6
    7  李七 1234567897 2004/1/7 6212667 wang7 007 AAG 2004/1/7
    28 張七 1234567867 2004/1/7 6212667 zhang7 007 AAG 2004/1/7
    17 黃七 1234567887 2004/1/7 6212677 want7 007 AAG 2004/1/7
    18 黃八 1234567888 2004/1/8 6212678 want8 008 AAH 2004/1/8
    29 張八 1234567868 2004/1/8 6212668 zhang8 008 AAH 2004/1/8
    8  李八 1234567898 2004/1/8 6212668 wang8 008 AAH 2004/1/8
    9  李九 1234567899 2004/1/9 6212669 want9 009 AAI 2004/1/9
    10 李十 1234567910 2004/1/9 6212669 want9 009 AAI 2004/1/9
    30 張九 1234567869 2004/1/9 6212669 zhang9 009 AAI 2004/1/9
    19 黃九 1234567889 2004/1/9 6212679 want9 009 AAI 2004/1/9
    20 黃十 1234567110 2004/1/9 6212679 want9 009 AAI 2004/1/9
    21 黃軍 1234567111 2004/1/9 6212679 want9 009 AAI 2004/1/9
    */
    ----------------------B.查詢語句(End)-----------------------------------------------C.原因分析(Start)-------------------------
    -------******分析*******************------
    --(問題出在@OrderBy=' order by convert(datetime, Register_Date) asc',如果把@OrderBy條件改為@OrderBy='order by  Register_Date asc',就沒有問題,
    --因為sql在處理select語句,如果語句中含有變量賦值,且指定order by 子句(轉換列會有問題)
    --a.沒有轉換列Register_Date
    --結果正確---
    declare @i int
    set @i=0
    select top 10 @i=@i+1 from people_register order by Register_Date
    select 記錄數=@i
    go
    /*
    記錄數
    10
    */--b.有轉換列Register_Date(轉換列會有問題)
    --結果錯誤---
    declare @i int
    set @i=0
    select top 10 @i=@i+1 from people_register order by cast(Register_Date as varchar)
    select 記錄數=@i
    go
    /*
    記錄數
    1
    */----------------------C.原因分析(End)-------------------------
      

  8.   

    ----------------------D.解決方法(Strat)-------------------------
    ---a.修改調用方式,可能不是想要的結果(s)-------
    declare  @PageSize int, ---頁面大小
    @CurrPage int, --當前頁號,從1開始
    @TableName nvarchar(100), --表名
    @UniqueField nvarchar(100), --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where nvarchar(1000), --搜索條,例子: where fileld=value
    @OrderBy nvarchar(200), --排序字段,例子:order by name desc
                      @TotalNum int                               --符合条件的记录总数      select @PageSize=10, --頁面大小
    @CurrPage=1, --當前頁號,從1開始
    @TableName='people_register', --表名
    @UniqueField='peopleID', --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where='  ', --搜索條件,例子: where fileld=value
    --@OrderBy=' order by convert(datetime, Register_Date) asc ' --排序字段,例子:order by name desc
    @OrderBy=' order by Register_Date  asc ' --排序字段,例子:order by name descexec Select_Page
    @PageSize, --頁面大小
    @CurrPage, --當前頁號,從1開始
    @TableName, --表名
    @UniqueField, --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where, --搜索條件,例子: where fileld=value
    @OrderBy, --排序字段,例子:order by name desc
    @TotalNum output  --符合条件的记录总数
    /*
    peopleID    name  peopleGuid        Register_Date  Register_PersonTel Register_PersonName  cancelToNewPlace cancleReason cancleDate
    1  李一 1234567891 2004/1/1 6212661 wang1 001 AAA 2004/1/1
    11 黃一 1234567881 2004/1/1 6212671 want1 001 AAA 2004/1/1
    22 張一 1234567861 2004/1/1 6212661 zhang1 001 AAA 2004/1/1
    12 黃二 1234567882 2004/1/2 6212672 want2 002 AAB 2004/1/2
    2  李二 1234567892 2004/1/2 6212662 wang2 002 AAB 2004/1/2
    23 張二 1234567862 2004/1/2 6212662 zhang2 002 AAB 2004/1/2
    24 張三 1234567863 2004/1/3 6212663 zhang3 003 AAC 2004/1/3
    3  李三 1234567893 2004/1/3 6212663 wang3 003 AAC 2004/1/3
    13 黃三 1234567883 2004/1/3 6212673 want3 003 AAC 2004/1/3
    4  李四 1234567894 2004/1/4 6212664 wang4 004 AAD 2004/1/4
    */
    select @TotalNum as 記錄數
    go
    ---------結果正確----------------
    /*
    記錄數
    30
    */
    ---a.修改調用方式,可能不是想要的結果(e)----------b.修改存儲過程(s)-------if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Select_Page]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
         drop proc [dbo].[Select_Page]
    goCREATE PROCEDURE Select_Page
    @PageSize int, --頁面大小
    @CurrPage int, --當前頁碼,從1開始
    @TableName nvarchar(100), --表名
    @UniqueField nvarchar(100), --一般為具有唯一值的關鍵字段,算法??需要。注意:視該字段的類型需要适當修改代碼。
    @Where nvarchar(1000), --搜索條件,例子: where fileld=value
    @OrderBy nvarchar(200), --排序字段,例子:order by name desc
    @TotalNum int output  --符合條件的記錄總數
     
    AS
    declare @Previous int
    declare @i int
    declare @TopNum int
    declare @StrSql nvarchar(2000)
    declare @IdStr nvarchar(4000)
    declare @StrSqlTotal nvarchar(2000)set @TopNum = @PageSize * @CurrPage
    set @Previous = @TopNum - @PageSize
    --select @StrSql = N'select top ' + str(@TopNum) + ' @i= @i+1,@IdStr=case when @i>' + str(@Previous) + ' then @IdStr+ltrim(rtrim(str(' + @UniqueField + ')))+N'','' else N'''' end from ' + @TableName + ' ' + @Where + ' ' + @OrderByselect @StrSql = N'select a.* from
    (
    select top '+str(@TopNum)+' *  from  ' + @TableName + ' ' + @Where+' '+@OrderBy+
    ') a left join
    (
    select top '+str(@Previous)+@UniqueField+' from  ' + @TableName + ' ' + @Where+' '+@OrderBy+
    ') b on a.'+@UniqueField+'=b.'+@UniqueField+' where b.'+@UniqueField+' is null'--得到符合搜索條件的記錄總數,只是得到總數,不需要order by
    set @TotalNum = 0
    set @StrSqlTotal = N'select @TotalNum=@TotalNum+1 from ' + @TableName + ' ' + @Where
    exec sp_executesql @StrSqlTotal, N'@TotalNum int output',@TotalNum output
    --返回符合條件的記錄exec(@StrSql)
    GO---b.修改存儲過程(e)---------調用實例(s)----declare  @PageSize int, ---頁面大小
    @CurrPage int, --當前頁號,從1開始
    @TableName nvarchar(100), --表名
    @UniqueField nvarchar(100), --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where nvarchar(1000), --搜索條,例子: where fileld=value
    @OrderBy nvarchar(200), --排序字段,例子:order by name desc
                      @TotalNum int                               --符合条件的记录总数      select @PageSize=10, --頁面大小
    @CurrPage=1, --當前頁號,從1開始
    @TableName='people_register', --表名
    @UniqueField='peopleID', --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where='  ', --搜索條件,例子: where fileld=value
    @OrderBy=' order by convert(datetime, Register_Date) asc ' --排序字段,例子:order by name descexec Select_Page
    @PageSize, --頁面大小
    @CurrPage, --當前頁號,從1開始
    @TableName, --表名
    @UniqueField, --一般為具有唯一值的關鍵字段,算法實現需要。注意:視該字段的類型需要适當修改代碼。
    @Where, --搜索條件,例子: where fileld=value
    @OrderBy, --排序字段,例子:order by name desc
    @TotalNum output  --符合条件的记录总数----------沒有記錄-------------
    --結果正確
    /*
    peopleID    name  peopleGuid        Register_Date  Register_PersonTel Register_PersonName  cancelToNewPlace cancleReason cancleDate
    11 黃一 1234567881 2004/1/1 6212671 want1 001 AAA 2004/1/1
    1  李一 1234567891 2004/1/1 6212661 wang1 001 AAA 2004/1/1
    22 張一 1234567861 2004/1/1 6212661 zhang1 001 AAA 2004/1/1
    2  李二 1234567892 2004/1/2 6212662 wang2 002 AAB 2004/1/2
    12 黃二 1234567882 2004/1/2 6212672 want2 002 AAB 2004/1/2
    23 張二 1234567862 2004/1/2 6212662 zhang2 002 AAB 2004/1/2
    3  李三 1234567893 2004/1/3 6212663 wang3 003 AAC 2004/1/3
    13 黃三 1234567883 2004/1/3 6212673 want3 003 AAC 2004/1/3
    24 張三 1234567863 2004/1/3 6212663 zhang3 003 AAC 2004/1/3
    4  李四 1234567894 2004/1/4 6212664 wang4 004 AAD 2004/1/4
    */
    select @TotalNum as 記錄數
    --結果正確
    /*
    記錄數
    30
    */--調用實例(e)--------------------------D.解決方法(End)-------------------------