代碼

          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)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 皋兰县| 民县| 太白县| 鹤壁市| 吉木萨尔县| 淮安市| 财经| 渭南市| 通州区| 香河县| 壤塘县| 绿春县| 容城县| 常宁市| 光山县| 沁阳市| 尚义县| 中宁县| 湟源县| 合山市| 潍坊市| 休宁县| 扎鲁特旗| 施甸县| 隆回县| 临海市| 罗城| 湘潭县| 额尔古纳市| 依安县| 广汉市| 清水河县| 大英县| 邢台市| 永安市| 大方县| 定远县| 老河口市| 尖扎县| 固原市| 太仆寺旗|