CREATE PROCEDURE Bbs_Article_List
@iSubject NVARCHAR (255),
@iPage INT,
@iPageSize INT,
@iPageCount INT OUTPUT,
@iNewCount INT OUTPUT,
@iReplyCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @iStart DATETIME
DECLARE @iEnd DATETIME
DECLARE @iTmpSelect NVARCHAR (1000)
DECLARE @iRowCount INT
SELECT @iNewCount=Count(*)
FROM tArticles
WHERE rSubject=@iSubject And rIsDel=0 And rRepID=0
SELECT @iReplyCount=Count(*)
FROM tArticles
WHERE rSubject=@iSubject And rIsDel=0 And rRepID<>0
SELECT @iPageCount=Count(*)
FROM tArticles
WHERE rSubject=@iSubject And rIsTop=0 And rIsDel=0 And rRepID=0
SELECT @iTmpSelect = 'SET NOCOUNT ON;SET ROWCOUNT @SPIntRowCount;SELECT @SPIntBeginID = rLastReplyTime FROM tArticles WHERE rSubject='+@iSubject+' And rIsTop=0 And rIsDel=0 And rRepID=0 ORDER BY rLastReplyTime DESC'
EXECUTE SP_EXECUTESQL
@iTmpSelect,
N'@SPIntRowCount INT,@SPIntBeginID DATETIME OUTPUT',
@SPIntRowCount=@iRowCount,@SPIntBeginID=@iStart OUTPUT
SET @iRowCount = @iPage * @iPageSize
SELECT @iTmpSelect = 'SET NOCOUNT ON;SET ROWCOUNT @SPIntRowCount;SELECT @SPIntEndID = rLastReplyTime FROM tArticles WHERE rSubject='+@iSubject+' And rIsTop=0 And rIsDel=0 And rRepID=0 ORDER BY rLastReplyTime DESC'
EXECUTE SP_EXECUTESQL
@iTmpSelect,
N'@SPIntRowCount INT,@SPIntEndID DATETIME OUTPUT',
@SPIntRowCount=@iRowCount,@SPIntEndID=@iEnd OUTPUT
SELECT @iTmpSelect = 'SET NOCOUNT OFF;SET ROWCOUNT 0;SELECT * FROM tArticles WHERE rSubject='+@iSubject+' And rIsTop=0 And rIsDel=0 And rRepID=0 AND rLastReplyTime BETWEEN'
IF @iEnd > @iStart
SELECT @iTmpSelect = @iTmpSelect+' @SPIntBeginID AND @SPIntEndID ORDER BY rLastReplyTime DESC'
ELSE
SELECT @iTmpSelect = @iTmpSelect+' @SPIntEndID AND @SPIntBeginID ORDER BY rLastReplyTime DESC'