Stored Procedures [dbo].[Forum_Members_GetByEmail]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@PortalIdint4
@EmailToMatchnvarchar(256)512
@PageIndexint4
@PageSizeint4
SQL Script


CREATE PROCEDURE dbo.[Forum_Members_GetByEmail]
    @PortalId INT,
    @EmailToMatch NVARCHAR(256),
    @PageIndex INT,
    @PageSize INT
AS
    BEGIN
    -- Set the page bounds
        DECLARE @PageLowerBound INT
        DECLARE @PageUpperBound 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(0, 1)
                          NOT NULL,
              UserId INT
            )

    -- Insert into our temp table
        IF ( @EmailToMatch IS NULL )
            INSERT  INTO #PageIndexForUsers ( UserId )
                    SELECT  UserId
                    FROM    dbo.Forum_vw_ForumUsers
                    WHERE   Email IS NULL
                            AND ( PortalId = @PortalId
                                  OR ( PortalId IS NULL
                                       AND @PortalId IS NULL
                                     )
                                )
                    ORDER BY Email
        ELSE
            INSERT  INTO #PageIndexForUsers ( UserId )
                    SELECT  UserId
                    FROM    dbo.Forum_vw_ForumUsers
                    WHERE   LOWER(Email) LIKE LOWER(@EmailToMatch)
                            AND ( PortalId = @PortalId
                                  OR ( PortalId IS NULL
                                       AND @PortalId IS NULL
                                     )
                                )
                    ORDER BY Email

        SELECT  U.[UserID],
                [PostCount],
                [EnableDisplayInMemberList],
                [EnableOnlineStatus],
                [EnablePM],
                [PortalID],
                [FirstName],
                [LastName],
                [Email],
                [Username],
                [PostCount],
                ( SELECT    COUNT(UserID)
                  FROM      dbo.Forum_vw_ForumUsers
                ) AS TotalRecords
        FROM    dbo.Forum_vw_ForumUsers U
                INNER JOIN #PageIndexForUsers P ON U.UserID = P.UserID
        WHERE   ( PortalId = @PortalId
                  OR ( PortalId IS NULL
                       AND @PortalId IS NULL
                     )
                )
                AND P.IndexId >= @PageLowerBound
                AND P.IndexId <= @PageUpperBound
        ORDER BY LOWER(U.Email)
    END

GO
Uses