<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
    create Proc p_show 
    @QueryStr nvarchar(4000), --表名、視圖名、查詢語句 
    @PageSize int=10,   --每頁的大小(行數(shù)) 
    @PageCurrent int=1,   --要顯示的頁 
    @FdShow nvarchar (4000)='', --要顯示的字段列表,如果查詢結(jié)果有標(biāo)識字段,需要指定此值,且不包含標(biāo)識字段 
    @FdOrder nvarchar (1000)='' --排序字段列表 
    as 
    declare @FdName nvarchar(250) --表中的主鍵或表、臨時表中的標(biāo)識列名 
     ,@Id1 varchar(20),@Id2 varchar(20) --開始和結(jié)束的記錄號 
     ,@Obj_ID int    --對象ID 
    --表中有復(fù)合主鍵的處理 
    declare @strfd nvarchar(2000) --復(fù)合主鍵列表 
     ,@strjoin nvarchar(4000) --連接字段 
     ,@strwhere nvarchar(2000) --查詢條件 
     
     
    select @Obj_ID=object_id(@QueryStr) 
     ,@FdShow=case isnull(@FdShow,'') when '' then ' *' else ' '+@FdShow end 
     ,@FdOrder=case isnull(@FdOrder,'') when '' then '' else ' order by '+@FdOrder end 
     ,@QueryStr=case when @Obj_ID is not null then ' '+@QueryStr else ' ('+@QueryStr+') a' end 
     
    --如果顯示第一頁,可以直接用top來完成 
    if @PageCurrent=1  
    begin 
     select @Id1=cast(@PageSize as varchar(20)) 
     exec('select top '+@Id1+@FdShow+' from '+@QueryStr+@FdOrder
     return 
    end 
     
    --如果是表,則檢查表中是否有標(biāo)識更或主鍵 
    if @Obj_ID is not null and objectproperty(@Obj_ID,'IsTable')=1 
    begin 
     select @Id1=cast(@PageSize as varchar(20)) 
      ,@Id2=cast((@PageCurrent-1)*@PageSize as varchar(20)) 
     
     select @FdName=name from syscolumns where id=@Obj_ID and status=0x80 
     if @@rowcount=0   --如果表中無標(biāo)識列,則檢查表中是否有主鍵 
     begin 
      if not exists(select 1 from sysobjects where parent_obj=@Obj_ID and xtype='PK') 
       goto lbusetemp  --如果表中無主鍵,則用臨時表處理 
     
      select @FdName=name from syscolumns where id=@Obj_ID and colid in( 
       select colid from sysindexkeys where @Obj_ID=id and indid in( 
        select indid from sysindexes where @Obj_ID=id and name in( 
         select name from sysobjects where xtype='PK' and parent_obj=@Obj_ID 
       ))) 
      if @@rowcount>1  --檢查表中的主鍵是否為復(fù)合主鍵 
      begin 
       select @strfd='',@strjoin='',@strwhere='' 
       select @strfd=@strfd+',['+name+']' 
        ,@strjoin=@strjoin+' and a.['+name+']=b.['+name+']' 
        ,@strwhere=@strwhere+' and b.['+name+'] is null' 
        from syscolumns where id=@Obj_ID and colid in( 
        select colid from sysindexkeys where @Obj_ID=id and indid in( 
         select indid from sysindexes where @Obj_ID=id and name in( 
          select name from sysobjects where xtype='PK' and parent_obj=@Obj_ID 
        ))) 
       select @strfd=substring(@strfd,2,2000) 
        ,@strjoin=substring(@strjoin,5,4000) 
        ,@strwhere=substring(@strwhere,5,4000) 
       goto lbusepk 
      end 
     end 
    end 
    else 
     goto lbusetemp 
     
    /*--使用標(biāo)識列或主鍵為單一字段的處理方法--*/ 
    lbuseidentity:  
     exec('select top '+@Id1+@FdShow+' from '+@QueryStr 
      +' where '+@FdName+' not in(select top ' 
      +@Id2+' '+@FdName+' from '+@QueryStr+@FdOrder 
      +')'+@FdOrder 
      ) 
     return 
     
    /*--表中有復(fù)合主鍵的處理方法--*/ 
    lbusepk:   
     exec('select '+@FdShow+' from(select top '+@Id1+' a.* from 
      (select top 100 percent * from '+@QueryStr+@FdOrder+') a 
      left join (select top '+@Id2+' '+@strfd+'  
      from '+@QueryStr+@FdOrder+') b on '+@strjoin+' 
      where '+@strwhere+') a' 
      ) 
     return 
     
    /*--用臨時表處理的方法--*/ 
    lbusetemp:   
    select @FdName='[ID_'+cast(newid() as varchar(40))+']' 
     ,@Id1=cast(@PageSize*(@PageCurrent-1) as varchar(20)) 
     ,@Id2=cast(@PageSize*@PageCurrent-1 as varchar(20)) 
     
    exec('select '+@FdName+'=identity(int,0,1),'+@FdShow+' 
      into #tb from'+@QueryStr+@FdOrder+' 
     select '+@FdShow+' from #tb where '+@FdName+' between ' 
     +@Id1+' and '+@Id2 
     ) 

    posted on 2007-06-27 13:15 蘆葦 閱讀(373) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
    主站蜘蛛池模板: 亚洲国产精品成人| 亚洲午夜日韩高清一区| 亚洲春色在线视频| 中国一级毛片视频免费看| 亚洲一区二区三区国产精品| 国产亚洲福利精品一区二区| 免费**毛片在线播放直播| 乱淫片免费影院观看| 亚洲国产精品成人网址天堂| 日韩免费在线中文字幕| 亚洲麻豆精品国偷自产在线91| 四虎永久在线精品免费一区二区| 亚洲va中文字幕无码| 精品国产污污免费网站入口在线 | 人妻巨大乳hd免费看| 久久久久一级精品亚洲国产成人综合AV区| 国产成人 亚洲欧洲| 在线亚洲精品自拍| 久久精品国产大片免费观看| 亚洲色图.com| 免费高清资源黄网站在线观看 | 中文字幕亚洲码在线| 波多野结衣视频在线免费观看| jizz免费一区二区三区| 久久精品国产精品亚洲色婷婷| 99热精品在线免费观看| 亚洲天堂男人影院| 精品国产香蕉伊思人在线在线亚洲一区二区 | 亚洲视频一区在线播放| 黄页网站免费观看| WWW亚洲色大成网络.COM| 中文字幕一精品亚洲无线一区| 无码一区二区三区免费| 亚洲综合无码无在线观看| 亚洲国产综合久久天堂| 日韩精品极品视频在线观看免费| 99亚偷拍自图区亚洲| 中文字幕亚洲综合久久男男| 91免费福利精品国产| 美女无遮挡免费视频网站| 久久精品国产亚洲AV麻豆~|