2011-05-12 161 views
0

誰能告訴我什麼是錯的這個腳本:幫助與存儲過程需要

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服務器報告: 消息102,級別15,狀態1,過程sp_memberConnection,線117 附近有語法錯誤'。

任何幫助將不勝感激......

回答

1

ROW_NUMBER需要ORDER BY

假設sbuser.sf_DisplayName是我認爲您需要的UDF。

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

這似乎是UDF的潛在不良使用,但它需要評估源數據中每行的UDF。 UDF可以用簡單的JOIN代替嗎?

+0

非常感謝...我應該看到..我感謝您的幫助.. – neojakey 2011-05-12 23:40:13