Требуется помощь с хранимой процедурой - PullRequest
0 голосов
/ 13 мая 2011

Может кто-нибудь сказать мне, что не так с этим сценарием:

IF @MODE = 'FRIEND-LIST-MANAGE'
DECLARE @TotalPages INT
BEGIN
    SELECT @TotalPages = COUNT(*)/@PageSize
    FROM Member a
    INNER JOIN MemberConnection d ON d.ConnMemberID = a.MemberID
    WHERE d.MemberID = @MemberID;

    WITH FindMyFriends AS
    (
        SELECT ROW_NUMBER() OVER(sbuser.sf_DisplayName(a.MemberID) ASC) AS RowNum,
        a.MemberID,                                              -- 1
        a.UserName,                                              -- 2
        a.City,                                                  -- 3
        b.Abbr,                                                  -- 4
        b.State,                                                 -- 5
        c.Country,                                               -- 6 
        a.AvatarSm,                                              -- 7 
        a.AvatarMed,                                             -- 8 
        a.AvatarLg,                                              -- 9 
        sbuser.sf_MemberHasAudio(a.MemberID) AS HasAudio,        -- 10 
        sbuser.sf_MemberHasVideo(a.MemberID) AS HasVideo,        -- 11 
        sbuser.sf_MemberHasImages(a.MemberID) AS HasImages,      -- 12 
        sbuser.sf_DisplayName(a.MemberID) AS DisplayName,        -- 13 
        a.ProfileTypeID,                                         -- 14 
        a.LastLogin,                                             -- 15 
        a.CreateDate                                             -- 16 
        FROM Member a
        LEFT JOIN State b ON b.StateID = a.StateID
        INNER JOIN Country c ON c.CountryID = a.CountryID
        INNER JOIN MemberConnection d ON d.ConnMemberID = a.MemberID
        WHERE d.MemberID = @MemberID
    )
    SELECT * 
    FROM FindMyFriends
    WHERE RowNum BETWEEN (@PG - 1) * @PageSize AND @PG * @PageSize
    ORDER BY sbuser.sf_DisplayName(a.MemberID) ASC
END

Отчеты SQL-сервера: Msg 102, Уровень 15, Состояние 1, Процедура sp_memberConnection, Строка 117 Неверный синтаксис рядом с '.'.

Любая помощь будет принята с благодарностью ...

1 Ответ

1 голос
/ 13 мая 2011

ROW_NUMBER требуется ORDER BY.

Предполагая, что sbuser.sf_DisplayName - UDF, я думаю, что вам понадобится.

ROW_NUMBER() OVER(ORDER BY sbuser.sf_DisplayName(a.MemberID) ASC)

Это выглядит как потенциально неправильное использование UDF, так как для этого нужно будет оценить UDF для каждой строки в исходных данных. Можно ли заменить UDF простым JOIN?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...