Stored Procedure Properties
| Name | Value |
|---|---|
| Owner | dbo |
| Created | 2004-05-31 |
| Startup | False |
| Encrypted | False |
Creation Options
| Name | Value |
|---|---|
| QUOTED_IDENTIFIER | OFF |
| ANSI_NULLS | OFF |
Parameters
| Name | DataType | Length | Type |
|---|---|---|---|
| @PageIndex | int | 4 | INPUT |
| @PageSize | int | 4 | INPUT |
| @SortBy | int | 4 | INPUT |
| @SortOrder | bit | 1 | INPUT |
| @UserNameBeginsWith | nvarchar | 2 | INPUT |
Total: 5 parameter(s)
SQL
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE forums_GetAllUsers
(
@PageIndex int,
@PageSize int,
@SortBy int,
@SortOrder bit,
@UserNameBeginsWith nvarchar(1)
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1
-- Create a temp table to store the select results
CREATE TABLE #PageIndexForUsers
(
IndexID int IDENTITY (1, 1) NOT NULL,
Username nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS
)
-- Special case depending on what the user wants and how they want it ordered by
-- Sort by Date Joined
IF @SortBy = 0 AND @SortOrder = 0
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY DateCreated
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY DateCreated
ELSE IF @SortBy = 0 AND @SortOrder = 1
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY DateCreated DESC
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY DateCreated DESC
-- Sort by username
IF @SortBy = 1 AND @SortOrder = 0
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY Username
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY Username
ELSE IF @SortBy = 1 AND @SortOrder = 1
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY Username DESC
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY Username
-- Sort by Website
IF @SortBy = 2 AND @SortOrder = 0
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY Url DESC
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY Url DESC
ELSE IF @SortBy = 2 AND @SortOrder = 1
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY Url
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY Url DESC
-- Sort by Last Active
IF @SortBy = 3 AND @SortOrder = 0
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY LastActivity DESC
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY LastActivity DESC
ELSE IF @SortBy = 3 AND @SortOrder = 1
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY LastActivity
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY LastActivity
-- Sort by TotalPosts
IF @SortBy = 4 AND @SortOrder = 1
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY TotalPosts DESC
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY TotalPosts DESC
ELSE IF @SortBy = 4 AND @SortOrder = 0
IF @UserNameBeginsWith IS NULL
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 ORDER BY TotalPosts
ELSE
INSERT INTO #PageIndexForUsers (Username)
SELECT Username FROM Users WHERE Approved = 1 AND DisplayInMemberList = 1 AND LEFT(UserName, 1) = @UserNameBeginsWith ORDER BY TotalPosts
-- Get the user details
SELECT
U.Username,
Password,
Email,
ForumView,
Approved,
ProfileApproved,
Trusted,
FakeEmail,
URL,
Signature,
DateCreated,
TrackYourPosts,
LastLogin,
LastActivity,
TimeZone,
Location,
Occupation,
Interests,
MSN,
Yahoo,
AIM,
ICQ,
TotalPosts,
HasAvatar,
ShowUnreadTopicsOnly,
Style,
AvatarType,
ShowAvatar,
DateFormat,
PostViewOrder,
FlatView,
IsModerator = (SELECT Count(*) FROM Moderators WHERE Username = U.Username),
AvatarUrl,
Attributes
FROM
Users U (nolock),
#PageIndexForUsers
WHERE
Approved = 1 AND
U.Username = #PageIndexForUsers.Username AND
#PageIndexForUsers.IndexID > @PageLowerBound AND
#PageIndexForUsers.IndexID < @PageUpperBound
ORDER BY
#PageIndexForUsers.IndexID
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO