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

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

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

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
    create Proc p_show 
    @QueryStr nvarchar(4000), --表名、視圖名、查詢語句 
    @PageSize int=10,   --每頁的大小(行數) 
    @PageCurrent int=1,   --要顯示的頁 
    @FdShow nvarchar (4000)='', --要顯示的字段列表,如果查詢結果有標識字段,需要指定此值,且不包含標識字段 
    @FdOrder nvarchar (1000)='' --排序字段列表 
    as 
    declare @FdName nvarchar(250) --表中的主鍵或表、臨時表中的標識列名 
     ,@Id1 varchar(20),@Id2 varchar(20) --開始和結束的記錄號 
     ,@Obj_ID int    --對象ID 
    --表中有復合主鍵的處理 
    declare @strfd nvarchar(2000) --復合主鍵列表 
     ,@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 
     
    --如果是表,則檢查表中是否有標識更或主鍵 
    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   --如果表中無標識列,則檢查表中是否有主鍵 
     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  --檢查表中的主鍵是否為復合主鍵 
      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 
     
    /*--使用標識列或主鍵為單一字段的處理方法--*/ 
    lbuseidentity:  
     exec('select top '+@Id1+@FdShow+' from '+@QueryStr 
      +' where '+@FdName+' not in(select top ' 
      +@Id2+' '+@FdName+' from '+@QueryStr+@FdOrder 
      +')'+@FdOrder 
      ) 
     return 
     
    /*--表中有復合主鍵的處理方法--*/ 
    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)  編輯  收藏 所屬分類: 數據庫
    主站蜘蛛池模板: 亚洲国产成人va在线观看网址| A级毛片高清免费视频在线播放| 亚洲AV日韩AV天堂一区二区三区| 全部免费毛片在线| 精品久久8x国产免费观看| 中文在线免费不卡视频| 国产亚洲视频在线| 亚洲永久在线观看| 亚洲电影免费观看| 亚洲国产成人久久精品动漫| 亚洲精品国产精品乱码不卡| 精品国产免费观看久久久| 国产va精品免费观看| 亚洲免费网站在线观看| 亚洲电影免费在线观看| 国产在线一区二区综合免费视频| 精品熟女少妇aⅴ免费久久| 无套内谢孕妇毛片免费看看| 亚洲国产成人精品无码区二本| 亚洲国产精品线观看不卡| 亚洲黄色网站视频| 久久久久亚洲av无码专区 | 99亚偷拍自图区亚洲| 久久夜色精品国产噜噜噜亚洲AV| 国产V亚洲V天堂无码| 亚洲AV永久无码精品一百度影院| 亚洲精品无码成人AAA片| a级亚洲片精品久久久久久久| 亚洲片一区二区三区| 亚洲精品在线视频| 久久久久亚洲精品中文字幕| 国产精品亚洲视频| 亚洲午夜久久久久久久久电影网 | 一个人看的免费高清视频日本| 深夜福利在线免费观看| 无码毛片一区二区三区视频免费播放| 国产精品亚洲综合| 日本一区二区三区在线视频观看免费| 曰批全过程免费视频免费看 | 好吊妞788免费视频播放| 女人与禽交视频免费看|