<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ù)庫
    主站蜘蛛池模板: 羞羞视频网站免费入口| 无码一区二区三区AV免费| 亚洲AV无码一区二区三区电影| 亚洲av无码片在线播放| 亚洲国产高清在线一区二区三区| 成人免费视频69| 国产精品99精品久久免费| 免费手机在线看片| 亚洲AV日韩综合一区| 亚洲精品在线免费观看| 亚洲色精品vr一区二区三区| 国产免费av片在线无码免费看 | 免费人成网站在线播放| 在线观看特色大片免费视频| a级毛片在线免费观看| 午夜不卡AV免费| 老司机福利在线免费观看| 亚洲无人区码一二三码区别图片| 久久精品国产亚洲av麻豆小说 | 老司机福利在线免费观看| 亚洲变态另类一区二区三区| 在线综合亚洲欧洲综合网站| 亚洲国产成人精品无码区在线秒播 | 亚洲AⅤ视频一区二区三区| 小小影视日本动漫观看免费| 一个人免费观看在线视频www| 日本最新免费网站| 1000部拍拍拍18勿入免费视频下载| 另类免费视频一区二区在线观看| 国产又黄又爽又大的免费视频| 五月婷婷免费视频| 国产精品免费久久| 最近免费中文字幕MV在线视频3| 99视频在线观看免费| 国产午夜成人免费看片无遮挡 | 免费成人午夜视频| 亚洲人成网站在线观看青青| 亚洲人成无码网WWW| 亚洲午夜久久久久久久久久| 亚洲AV午夜成人影院老师机影院| 亚洲国产精品久久久久|