posts - 5,  comments - 5,  trackbacks - 0
          CREATE PROCEDURE dbo.GetPagingRecord
              (
                  @tablename varchar(100),--表名或視圖表
                  @fieldlist varchar(4000)='*',--欲選擇字段列表
                  @orderfield varchar(100),--排序字段
                  @keyfield varchar(100),--主鍵
                  @pageindex int,--頁(yè)號(hào),從1開(kāi)始
                  @pagesize int=20,--頁(yè)尺寸
                  @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中危險(xiǎn)字符,并且將條件處理成易嵌入的形式
              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) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): SQL

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          相冊(cè)

          .net

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 长宁区| 大城县| 临朐县| 廉江市| 和平县| 乐东| 余姚市| 崇阳县| 大厂| 岫岩| 沙湾县| 杂多县| 巴彦淖尔市| 许昌县| 广安市| 乐都县| 威远县| 仪陇县| 浮梁县| 兴安盟| 合阳县| 永寿县| 长垣县| 全椒县| 加查县| 蓬溪县| 兰溪市| 金平| 茶陵县| 西贡区| 博爱县| 玉门市| 滕州市| 丁青县| 图木舒克市| 荔浦县| 台江县| 三台县| 独山县| 班玛县| 玛沁县|