2011-05-12 82 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