存储过程的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:18:05
CREATE PROCEDURE dbo.EA_List
@ClassID int,
@NClassID int,
@Page int,
@PageSize int,
@TableArticle varchar(20)
AS
if (@Page <= 1)
BEGIN
Select Top @PageSize ID,Title,Author,AddDate,Hits,Remark,TitleColor From @TableArticle Where ClassID=@ClassID AND NClassID=@NClassID ORDER BY ID DESC
END
ELSE
BEGIN
Select Top @PageSize ID,Title,Author,AddDate,Hits,Remark,TitleColor From @TableArticle Where ClassID=@ClassID AND NClassID=@NClassID AND ID Not In ( Select Top @PageSize * ( @Page - 1 ) ID From @TableArticle Where ClassID=@ClassID AND NClassID=@NClassID ORDER BY ID DESC) ORDER BY ID DESC
END
GO

我这样写的一个存储过程,但一执行的时候就说

服务器: 消息 170,级别 15,状态 1,过程 EA_List,行 10
第 10 行: @PageSize' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 EA_List,行 14
第 14 行: '@PageSize' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 EA_List,行 14
第 14 行: '@PageSize' 附近有语法错误。

请问该如何修改?

CREATE PROCEDURE dbo.EA_List
@ClassID int,
@NClassID int,
@Page int,
@PageSize int,
@TableArticle varchar(20)
AS
Begin
Declare @CmdTxt varchar(1024)
--生成命令
if (@Page <= 1)

Set @CmdTxt=
'
Select Top ' + Cast(@PageSize as varchar(10)) +' ID,Title,Author,AddDate,Hits,Remark,TitleColor
From ' +@TableArticle +'
Where ClassID='+ Cast(@ClassID as varchar(10))+' AND NClassID=' + Cast(@NClassID as varchar(10))+'
ORDER BY ID DESC
'
ELSE

Set @CmdTxt=
'
Select Top '+ Cast(@PageSize as varchar(10)) +' ID,Title,Author,AddDate,Hits,Remark,TitleColor
From ' +@TableArticle +'
Where ClassID='+ Cast(@ClassID as varchar(10))+' AND NClassID=' + Cast(@NClassID as varchar(10))+' AND ID Not In
(
Select Top '+Cast(@PageSize * ( @Page - 1 ) as varchar(10