下面的是一个翻页的存储...
   
   set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GOCREATE PROCEDURE [dbo].[T_EnterpriseWeb_GetList]
(
@StatusValue int, @WhereClause varchar (2000)  , @OrderByClause varchar (2000)  , @PageIndex int   , @PageSize int   
)
AS BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int

-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize IF (@OrderByClause is null or LEN(@OrderByClause) < 1)
BEGIN
-- default order by to first column
SET @OrderByClause = 'CreateDate Desc'
END -- SQL Server 2005 Paging
declare @FROM as nvarchar(1000)
SET @FROM = ' FROM T_TrainingOrg B INNER JOIN (SELECT DISTINCT B.U_UserUID,C.CreateDate FROM T_TrainingCourse AS A INNER JOIN
                      T_TrainingOrg AS B ON A.U_UserUID = B.U_UserUID INNER JOIN
                      aspnet_Membership AS C ON B.U_UserUID = C.UserId'

declare @WHERE as nvarchar(1000)
SET @WHERE = ' WHERE (B.I_Status = '+ Convert(varchar,@StatusValue)+')'
IF LEN(@WhereClause) > 0
BEGIN
SET @WHERE = @WHERE + ' AND ' + @WhereClause
END
SET @WHERE = @WHERE + ') D ON B.U_UserUID = D.U_UserUID' declare @SQL as nvarchar(4000)
SET @SQL = 'WITH PageIndex AS ('
SET @SQL = @SQL + ' SELECT '
IF @PageSize > 0
BEGIN
SET @SQL = @SQL + ' TOP ' + convert(nvarchar, @PageUpperBound)
END
SET @SQL = @SQL + ' ROW_NUMBER() OVER (ORDER BY ' + @OrderByClause + ') as RowIndex'
SET @SQL = @SQL + ', B.*, D.CreateDate'
SET @SQL = @SQL + @FROM + @WHERE
SET @SQL = @SQL + ' ) SELECT *'
SET @SQL = @SQL + ' FROM PageIndex'
SET @SQL = @SQL + ' WHERE RowIndex > ' + convert(nvarchar, @PageLowerBound)
IF @PageSize > 0
BEGIN
SET @SQL = @SQL + ' AND RowIndex <= ' + convert(nvarchar, @PageUpperBound)
END
SET @SQL = @SQL + ' ORDER BY ' + @OrderByClause
exec sp_executesql @SQL

-- get row count
SET @SQL = 'SELECT COUNT(*) as TotalRowCount'
SET @SQL = @SQL + @FROM + @WHERE
exec sp_executesql @SQL

END我现在要拿写好的一个SQL语句根据上面的那个翻页存储.改成我需要的翻页存储...这个是我的SQL语句
 select A.U_UserUID ,'127' as Status  from  (select  distinct  U_UserUID  from   T_EnterpriseWeb  where  I_Status=127) A 
union
    (select  B.U_UserUID,'126' as Status from  
       (select distinct  U_UserUID from  T_EnterpriseWeb  where I_Status=126  and  U_UserUID 
           not in(select  distinct  U_UserUID   from   T_EnterpriseWeb  where  I_Status=127)) B)求高手帮忙...求高手帮忙...求高手帮忙...求高手帮忙...

解决方案 »

  1.   

    给个没错的你用
    sp_decrypt up_PublicTurnPageWebSite
    -
    DROP proc up_PublicTurnPageWebSite
    --通用的海量分页存储过程
    create proc up_PublicTurnPageWebSite(
     @TBName  nvarchar(100)='', --表名,如 pinyin
     @PageSize int=10,   --每页的记录数,默认为 10
     @CurPage int=1,   --表示当前页 1
     @KeyField nvarchar(100)='ID', --关键字段名,默认为 ID,该字段要求是表中的索引 或 无重复和不为空的字段
     @KeyAscDesc nvarchar(4)='ASC', --关键字的升、降序,默认为升序 ASC , 降序为 DESC
     @Fields  nvarchar(500)='*', --所选择的列名,默认为全选
     @Condition nvarchar(3000)='', --where 条件,默认为空
     @Order  nvarchar(200)='' --排序条件,默认为空
    ) with encryption as
     if @TBName = ''
        begin
            raiserror('请指定表名!',11,1)
            return
        end
     if @PageSize <=0 or @CurPage <0 
        begin
            raiserror('当前页数和每页的记录数都必须大于零!',11,1)
            return
        end
     if @KeyAscDesc = 'DESC'
      set @KeyAscDesc = '<'
     else
      set @KeyAscDesc = '>'
     if @Condition <> ''
      set @Condition = ' where ' + @Condition
     declare @SQL nvarchar(3000)
     set @SQL = ''
     if @CurPage = 1
        set @SQL = @SQL + 'SELECT Top ' + cast(@PageSize as nvarchar(20)) + ' ' + @Fields + ' FROM ' + @TBName + @Condition + ' ' + @Order
     else
        begin
      declare @iTopNum int
      set @iTopNum = @PageSize * (@CurPage - 1)
      set @SQL = @SQL + 'declare @sLastValue nvarchar(100)' + char(13)
      set @SQL = @SQL + 'SELECT Top ' + cast(@iTopNum as nvarchar(20)) + ' @sLastValue=' + @KeyField + ' FROM ' + @TBName + @Condition + ' ' + @Order + char(13)
      
      declare @Condition2 nvarchar(3000)
      if @Condition = ''
         set @Condition2 = ' where ' + @KeyField + @KeyAscDesc + '@sLastValue '
      else
         set @Condition2 = ' and ' + @KeyField + @KeyAscDesc + '@sLastValue '
      set @SQL = @SQL + 'SELECT Top ' + cast(@PageSize as nvarchar(20)) + ' ' + @Fields + ' FROM ' + @TBName + @Condition + @Condition2 + @Order
        end
     EXECUTE sp_executesql @SQL