代碼

          alter PROCEDURE Pages
          @TableNames VARCHAR(200),     --表名,可以是多個表,但不能用別名
          @PrimaryKey VARCHAR(100),     --主鍵,可以為空,但@Order為空時該值不能為空
          @Fields     VARCHAR(800),         --要取出的字段,可以是多個表的字段,可以為空,為空表示select *
          @PageSize INT,             --每頁記錄數
          @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 閱讀(123) 評論(0)  編輯  收藏

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


          網站導航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 虎林市| 陇南市| 六枝特区| 中超| 新竹市| 泸西县| 兴国县| 财经| 望谟县| 唐山市| 汤阴县| 辽宁省| 平和县| 商水县| 平乐县| 张掖市| 太仆寺旗| 高安市| 亚东县| 康马县| 武鸣县| 吴旗县| 凤山县| 万宁市| 樟树市| 景宁| 通渭县| 栾川县| 兰溪市| 内黄县| 原平市| 湟源县| 普宁市| 邯郸县| 平顶山市| 抚顺市| 瑞昌市| 民丰县| 安陆市| 喜德县| 安庆市|