ELSE IF(@topnum>0)
    BEGIN
    IF(@type>0)

    SELECT TOP (@topnum)
    A.ArticleID,
    A.ArticleTitle,
    A.ArticleContent,
    A.ArticleImg,
    PublicDate,
    ViewTimes,
    A.ArticleType As TypeID,
    B.TypeTxt
    FROM  ArticleInfo A
    JOIN  TypeInfo B
    ON A.ArticleType=B.TypeID
    AND A.ArticleType=@type
    ORDER BY ArticleID DESC
END
 Incorrect syntax near '('.SELECT TOP (@topnum)指的是这一行

解决方案 »

  1.   

    你用的是2000还是2005要用动态的sql
      

  2.   

    tryELSE IF(@topnum>0)
        BEGIN
        IF(@type>0)

        EXEC('SELECT TOP ' + @topnum +
        ' A.ArticleID,
        A.ArticleTitle,
        A.ArticleContent,
        A.ArticleImg,
        PublicDate,
        ViewTimes,
        A.ArticleType As TypeID,
        B.TypeTxt
        FROM  ArticleInfo A
        JOIN  TypeInfo B
        ON A.ArticleType=B.TypeID
        AND A.ArticleType=' + @type
        ' ORDER BY ArticleID DESC'
    END
      

  3.   

    ELSE IF(@topnum>0)
    BEGIN
        IF(@type>0)
      set rowcount @topnum
        
        SELECT 
        A.ArticleID,
        A.ArticleTitle,
        A.ArticleContent,
        A.ArticleImg,
        PublicDate,
        ViewTimes,
        A.ArticleType As TypeID,
        B.TypeTxt
        FROM  ArticleInfo A
        JOIN  TypeInfo B
        ON A.ArticleType=B.TypeID
        AND A.ArticleType=@type
        ORDER BY ArticleID DESC
        
        set rowcount 0
    END
      

  4.   

    筆誤,修改下ELSE IF(@topnum>0)
        BEGIN
        IF(@type>0)

        EXEC('SELECT TOP ' + @topnum +
        ' A.ArticleID,
        A.ArticleTitle,
        A.ArticleContent,
        A.ArticleImg,
        PublicDate,
        ViewTimes,
        A.ArticleType As TypeID,
        B.TypeTxt
        FROM  ArticleInfo A
        JOIN  TypeInfo B
        ON A.ArticleType=B.TypeID
        AND A.ArticleType=' + @type
        ' ORDER BY ArticleID DESC')
    END
      

  5.   

    TOP后只允许使用常数,不能使用变量。可以使用动态SQL或SET ROWCOUNT
      

  6.   

    delcare @sql varchar(300)
    set @sql='SELECT TOP '+ (@topnum)+'
        A.ArticleID,
        A.ArticleTitle,
        A.ArticleContent,
        A.ArticleImg,
        PublicDate,
        ViewTimes,
        A.ArticleType As TypeID,
        B.TypeTxt
        FROM  ArticleInfo A
        JOIN  TypeInfo B
        ON A.ArticleType=B.TypeID
        AND A.ArticleType=@type
        ORDER BY ArticleID DESC'exec (@sql)
      

  7.   

    ELSE IF(@topnum>0)
        BEGIN
        IF(@type>0)

        exec('SELECT TOP '+@topnum+' A.ArticleID,A.ArticleTitle,A.ArticleContent,A.ArticleImg,PublicDate,ViewTimes,A.ArticleType As TypeID,B.TypeTxt FROM  ArticleInfo A  JOIN  TypeInfo B  ON A.ArticleType=B.TypeID  AND A.ArticleType='+@type+ '  ORDER BY ArticleID DESC')
    END
      

  8.   

    掉了+號
    ELSE IF(@topnum>0)
        BEGIN
        IF(@type>0)    EXEC('SELECT TOP ' + @topnum +
        ' A.ArticleID,
        A.ArticleTitle,
        A.ArticleContent,
        A.ArticleImg,
        PublicDate,
        ViewTimes,
        A.ArticleType As TypeID,
        B.TypeTxt
        FROM  ArticleInfo A
        JOIN  TypeInfo B
        ON A.ArticleType=B.TypeID
        AND A.ArticleType=' + @type +
        ' ORDER BY ArticleID DESC')
    END