ALTER  PROCEDURE dbo.aspnet_Membership_GetAllUsers
    
@ApplicationName       NVARCHAR(256),
    
@PageIndex             INT,
    
@PageSize              INT
AS
BEGIN
    
DECLARE @ApplicationId UNIQUEIDENTIFIER
    
SELECT  @ApplicationId = NULL
    
SELECT  @ApplicationId = ApplicationId FROM dbo.aspnet_Applications WHERE LOWER(@ApplicationName= LoweredApplicationName
    
IF (@ApplicationId IS NULL)
        
RETURN 0
    
/*声明应用程序ID变量,设置为空,查询ID的值并付值.不知道为什么前面都加个这个,用处不清楚.*/

    
-- Set the page bounds
    --设置页面绑定
    DECLARE @PageLowerBound INT
    
DECLARE @PageUpperBound INT
    
DECLARE @TotalRecords   INT
    
SET @PageLowerBound = @PageSize * @PageIndex
    
SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
    
    
-- Create a temp table TO store the select results 临时表
    CREATE TABLE #PageIndexForUsers
    (
        IndexId 
int IDENTITY (01NOT NULL,
        UserId 
UNIQUEIDENTIFIER
    )

    
-- Insert into our temp table 按用户名排序的用户ID列表
    INSERT INTO #PageIndexForUsers (UserId)
    
SELECT u.UserId
    
FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u
    
WHERE  u.ApplicationId = @ApplicationId AND u.UserId = m.UserId
    
ORDER BY u.UserName

    
SELECT @TotalRecords = @@ROWCOUNT --返回受上一语句影响的行数(怎么不用前面那种方式了?)

    
SELECT u.UserName, m.Email, m.PasswordQuestion, m.Comment, m.IsApproved,
            m.CreateDate,
            m.LastLoginDate,
            u.LastActivityDate,
            m.LastPasswordChangedDate,
            u.UserId, m.IsLockedOut,
            m.LastLockoutDate
    
FROM   dbo.aspnet_Membership m, dbo.aspnet_Users u, #PageIndexForUsers p
    
WHERE  u.UserId = p.UserId AND u.UserId = m.UserId AND
           p.IndexId 
>= @PageLowerBound AND p.IndexId <= @PageUpperBound
    
ORDER BY u.UserName
    
RETURN @TotalRecords
END
posted on 2006-08-30 09:16  MainIsUsed  阅读(571)  评论(0编辑  收藏  举报