posts - 5,  comments - 5,  trackbacks - 0
          CREATE PROCEDURE dbo.GetPagingRecord
              (
                  @tablename varchar(100),--表名或視圖表
                  @fieldlist varchar(4000)='*',--欲選擇字段列表
                  @orderfield varchar(100),--排序字段
                  @keyfield varchar(100),--主鍵
                  @pageindex int,--頁號,從1開始
                  @pagesize int=20,--頁尺寸
                  @strwhere varchar(4000),--條件
                  @ordertype varchar(1)='1'--排序,1,降序,0,升序
              )
          AS

              SET NOCOUNT ON
              declare @sqlstr varchar(6000)
              declare @orderstr varchar(100)
              if(@keyfield=@orderfield)
              begin
           set @orderstr = ''
              end
              else
              begin
           set @orderstr = ','+@keyfield+' asc'
              end
              if @pageindex<=0
           set @pageindex=1
              --處理SQL中危險字符,并且將條件處理成易嵌入的形式
              set @strwhere=replace(@strwhere,'''','''''')
              set @strwhere=replace(@strwhere,'--','')
              set @strwhere=replace(@strwhere,';','')
              set @sqlstr='declare @CurPageNum int;'
              set @sqlstr=@sqlstr+'declare @nextpagenum int;'
              set @sqlstr=@sqlstr+'set @curpagenum='+cast(@PageIndex-1 as varchar)+'*'+cast(@Pagesize as varchar)+';'
              set @sqlstr=@sqlstr+'set @nextpagenum='+cast(@PageIndex as varchar)+'*'+cast(@Pagesize as varchar)+';'
              set @sqlstr=@sqlstr+'declare @sqlstr varchar(6000);'
              if @ordertype='1'
              begin
              set @sqlstr=@sqlstr+'set @sqlstr=''select '+@fieldlist+' from ( select top ''+cast(@nextpagenum as varchar)+'' * from 
           
          '+@tablename+'  where 1=1 '+@strwhere+' order by '+@orderfield+' desc' + @orderstr+') as a where 1=1 and '+@keyfield+' not in ( 
           
          select top ''+cast(@curpagenum as varchar)+'' '+@keyfield+' from '+@tablename+' where 1=1 '+@strwhere+' 
           
          order by '+@orderfield +' desc'+ @orderstr +') order by ' + @orderfield +' desc'';'
              end
              else
              begin
              set @sqlstr=@sqlstr+'set @sqlstr=''select '+@fieldlist+' from ( select top ''+cast(@nextpagenum as varchar)+'' * from 
           
          '+@tablename+'  where 1=1 '+@strwhere+' order by '+@orderfield+' asc' + @orderstr+' ) as a where 1=1 and '+@keyfield+' not in ( 
           
          select top ''+cast(@curpagenum as varchar)+'' '+@keyfield+' from '+@tablename+' where 1=1 '+@strwhere+' 
           
          order by '+@orderfield +' asc' + @orderstr+') order by '+@orderfield +' asc'';'
              end
              set @sqlstr=@sqlstr+'execute( @sqlstr)'
              print @sqlstr
          execute(@sqlstr)
          GO

          posted on 2007-07-06 08:54 曾科 閱讀(223) 評論(0)  編輯  收藏 所屬分類: SQL

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          .net

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 仁寿县| 吐鲁番市| 崇阳县| 兰坪| 江华| 和平县| 甘肃省| 高州市| 邓州市| 吉木萨尔县| 泊头市| 寻甸| 柏乡县| 嘉定区| 龙山县| 郧西县| 西华县| 寻乌县| 徐州市| 吉林省| 西藏| 碌曲县| 西林县| 建阳市| 柏乡县| 永州市| 房山区| 中山市| 岳普湖县| 聊城市| 贵州省| 彩票| 云和县| 绵阳市| 门头沟区| 临沭县| 重庆市| 府谷县| 广河县| 高雄县| 叶城县|