首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

帮忙看看这一段存储过程的代码,老是报错。解决方案

2012-01-24 
帮忙看看这一段存储过程的代码,老是报错。ELSEIF(@topnum 0)BEGINIF(@type 0)SELECTTOP(@topnum)A.Articl

帮忙看看这一段存储过程的代码,老是报错。
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)指的是这一行

[解决办法]
TOP后只允许使用常数,不能使用变量。

可以使用动态SQL或SET ROWCOUNT
[解决办法]
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)
[解决办法]
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

热点排行