ALTERPROCEDURE dbo.aspnet_Membership_FindUsersByName @ApplicationNameNVARCHAR(256), @UserNameToMatchNVARCHAR(256), @PageIndexINT, @PageSizeINT AS BEGIN DECLARE@ApplicationIdUNIQUEIDENTIFIER SELECT@ApplicationId=NULL SELECT@ApplicationId= ApplicationId FROM dbo.aspnet_Applications WHERELOWER(@ApplicationName) = LoweredApplicationName IF (@ApplicationIdISNULL) RETURN0 -- Set the page bounds DECLARE@PageLowerBoundINT DECLARE@PageUpperBoundINT DECLARE@TotalRecordsINT SET@PageLowerBound=@PageSize*@PageIndex SET@PageUpperBound=@PageSize-1+@PageLowerBound -- Create a temp table TO store the select results CREATETABLE #PageIndexForUsers ( IndexId intIDENTITY (0, 1) NOTNULL, UserId UNIQUEIDENTIFIER ) /**//*此条基本一样,就是条件换成用户名而已,不过好象少了判断用户名是否为空.直接插了. 按用户名排序*/ -- Insert into our temp table INSERTINTO #PageIndexForUsers (UserId) SELECT u.UserId FROM dbo.aspnet_Users u, dbo.aspnet_Membership m WHERE u.ApplicationId =@ApplicationIdAND m.UserId = u.UserId AND u.LoweredUserName LIKELOWER(@UserNameToMatch) ORDERBY u.UserName 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 >=@PageLowerBoundAND p.IndexId <=@PageUpperBound ORDERBY u.UserName SELECT@TotalRecords=COUNT(*) FROM #PageIndexForUsers RETURN@TotalRecords---后面基本一样 END