代碼

          alter PROCEDURE Pages
          @TableNames VARCHAR(200),     --表名,可以是多個表,但不能用別名
          @PrimaryKey VARCHAR(100),     --主鍵,可以為空,但@Order為空時該值不能為空
          @Fields     VARCHAR(800),         --要取出的字段,可以是多個表的字段,可以為空,為空表示select *
          @PageSize INT,             --每頁記錄數(shù)
          @CurrentPage INT,         --當前頁,0表示第1頁
          @Filter VARCHAR(200= '',     --條件,可以為空,不用填 where
          @Order VARCHAR(200= '' ,    --排序,可以為空,為空默認按主鍵升序排列,不用填 order by
          @ResultCount varchar(24)
          AS
          BEGIN
          declare @topRow varchar(12)
          declare @tempPageSize varchar(12)
          if(len(@Order)>0)
          begin
          set @Order=' order by '+@Order
          end
          else
          begin
          set @Order=''
          end
          if (len(@Filter)<1)
          begin
          set @Filter=' 1=1'
          end
          if(@CurrentPage-1<=0)
          set @CurrentPage=0
          if(len(rtrim(ltrim(@ResultCount)))>0)
          set @ResultCount='set rowcount '+ltrim(rtrim(@ResultCount))
          set @topRow= rtrim(ltrim(str(@PageSize*(@CurrentPage-1))))
          set @tempPageSize= rtrim(ltrim(str(@PageSize)))
          exec('
          declare @temptable table(rownum int identity(1,1),Gid varchar(36))
          '+'
          declare @datatable table(Gid varchar(36))
          '+'
          declare @date datetime
          '+'
          set @date=getdate()
          '+'
          SET NOCOUNT ON 
          '+'
          '+@ResultCount+'
          insert into @temptable(Gid) select 
          '+@PrimaryKey+' from '+@TableNames+' where  '+@Filter+@Order+'
          set rowcount 
          '+@tempPageSize+'
          insert into @datatable(Gid) select  Gid from @temptable where rownum>
          '+@topRow+'
          select 
          '+@Fields+' from '+@TableNames+' where '+@Filter+' and '+@PrimaryKey+' in (select  Gid from @datatable)'+@Order+'
          set rowcount 0
          '+'
          print(datediff(ms,@date,getdate()))
          ')
          --declare @datatable table(Gid varchar(12))'+'
          --
          -insert into @datatable(Gid) select  Gid from @temptable where rownum>'+@topRow+'
          --
          set rowcount '+@tempPageSize+'
          --
          +'set rowcount 0'
          --
          print('insert into @temptable(Gid) select '+@PrimaryKey+' from '+@TableNames+' where  '+@Filter+@Order)
          --
          -print('select '+@Fields+' from '+@TableNames+' where '+@Filter+' and '+@PrimaryKey+' in(select Gid from @datatable) '+@Order) 
          end
          GO

           

          posted on 2010-08-12 14:47 sanmao 閱讀(125) 評論(0)  編輯  收藏

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


          網(wǎng)站導航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 深圳市| 济南市| 靖宇县| 崇仁县| 潮州市| 昌图县| 柳州市| 左贡县| 鄂温| 和平区| 定安县| 井研县| 凭祥市| 淮阳县| 南澳县| 望城县| 林口县| 梁山县| 鄂托克前旗| 文登市| 长春市| 林西县| 峨眉山市| 于都县| 策勒县| 民丰县| 仪陇县| 延寿县| 永胜县| 镇沅| 竹山县| 高尔夫| 南华县| 高阳县| 驻马店市| 石屏县| 尼玛县| 罗平县| 民丰县| 安西县| 浮山县|