<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)  編輯  收藏 所屬分類: 數據庫
    主站蜘蛛池模板: 亚洲一级Av无码毛片久久精品| 成年在线观看网站免费| 国产精品成人啪精品视频免费| 国产亚洲一卡2卡3卡4卡新区| 亚洲熟妇AV日韩熟妇在线| 久久精品国产99国产精品亚洲| 亚洲欧洲中文日产| 亚洲jjzzjjzz在线观看| 亚洲精品123区在线观看| 亚洲午夜在线播放| 亚洲色在线无码国产精品不卡| 亚洲综合校园春色| 国产AV旡码专区亚洲AV苍井空| 亚洲日韩中文字幕一区| 亚洲成在人线aⅴ免费毛片| 国产亚洲精品成人久久网站| 四虎国产精品成人免费久久| 国产福利免费视频| 国内精品久久久久影院免费| 精品熟女少妇av免费久久| 69式互添免费视频| 大地资源免费更新在线播放| 无码国模国产在线观看免费| 免费在线不卡视频| 久久精品国产亚洲网站| 亚洲综合一区二区精品久久| 在线综合亚洲中文精品| 豆国产96在线|亚洲| 中文字幕高清免费不卡视频| 青青草无码免费一二三区| 青青视频观看免费99| 日韩一区二区免费视频| 精品亚洲一区二区三区在线播放| 亚洲AV日韩AV永久无码下载| 亚洲一卡二卡三卡四卡无卡麻豆| 99亚洲男女激情在线观看| 中文字幕成人免费高清在线| 黄色永久免费网站| 日韩精品成人亚洲专区| 久久精品国产亚洲香蕉| 亚洲综合国产成人丁香五月激情|