/*************************************************************************/
/* */ /* procedure : up_GetForumList */
/* */
/* Description: 取得版面列表 */ /* */
/* Parameters: None */
/* */ /* Use table: forum , bbsuser */
/* */
/* Author: bige...@163.net */
/* */ /* Date: 2000/2/10 */
/* */ /* History: */
/* */ /*************************************************************************/
if exists(select * from sysobjects where id = object_id('up_GetForumList'))
drop proc up_GetForumList
go
create proc up_GetForumList as
select a.id , a.rootid , a.fatherid , a.layer , a.title , a.topiccount , a.description ,
'UserID'=b.id , b.UserName , b.Email , b.Homepage , b.Signature
from forum as a join BBSUser as b on a.Masterid=b.ID order by rootid , layer
go select id , title , rootid from forum
up_getforumlist
/*************************************************************************/
/* */ /* procedure : up_InsertForum */
/* */
/* Description: 新建版面 */ /* */
/* Parameters: @a_strName : 版面名称 */
/* @a_strDescription: 版面描述 */ /* @a_intFatherID: 分类ID,如果是0说明是大分类 */
/* */
/* Use table: forum */ /* */
/* Author: bige...@163.net */
/* */ /* Date: 2000/4/23 */
/* */ /* History: */
/* */ /*************************************************************************/
if exists(select * from sysobjects where id = object_id('up_InsertForum'))
drop proc up_InsertForum
go
/*如果是版面并且没有指定分类,则返回-1*/ if(@a_intFatherID <> 0 and not exists(select * from forum where id = @a_intFatherID))
return(-1)
/*根据@a_intFatherID计算layer , rootid*/
if(@a_intFatherID = 0)
begin select @intLayer = 0
select @intRootID = 0 end
else begin
select @intLayer = 1 select @intRootID = @a_intFatherID
end
Insert into Forum(rootid , layer , fatherid , title , description)
values(@intRootID , @intLayer , @a_intFatherID , @a_strName , @a_strDescription)
if (@a_intFatherID = 0)
begin select @intRootID = @@identity
update Forum set rootid = @intRootID where id = @intRootID
end
go
/*************************************************************************/
/* */ /* procedure : up_DeleteForum */
/* */
/* Description: 删除版面 */ /* */
/* Parameters: @a_intForumID : 版面id */
/* */ /* Use table: forum */
/* */ /* Author:
bige...@163.net */ /* */
/* Date: 2000/4/23 */ /* */
/* History: */ /* */
/*************************************************************************/
if exists(select * from sysobjects where id = object_id('up_DeleteForum'))
drop proc up_DeleteForum go
create proc up_DeleteForum @a_intForumID tinyint
as
delete from Forum where id = @a_intForumID
delete from Forum where RootID = @a_intForumID
go
/*更新版面贴子数*/ update forum set topiccount = topiccount + 1 where id = @a_intForumID
if (@@error != 0) goto OnError
/*更新用户分数*/ update BBSUser set point = point + 1 where id = @a_intUserID
if (@@error !=0) goto OnError
/*执行*/
commit transaction return(0)
/*错误处理*/
OnError: rollback transaction
return(-1)
go
select id from bbs where fatherid=0 order by rootid desc, ordernum desc
up_posttopic 1 , 12 , '哈哈哈,见笑了' , 'hello , world' , 1 , 1 , '203.93.95.10'
/*************************************************************************/
/* */
/* procedure : up_GetTopicList */
/* */ /* Description: 贴子列表 */
/* */ /* Parameters: @a_intForumID : 版面id */
/* @a_intPageNo: 页号 */
/* @a_intPageSize: 每页显示数,以根贴为准 */
/* */ /* Use table: bbs , forum */
/* */
/* Author: bige...@163.net */
/* */ /* Date: 2000/2/14 */
/* */ /* History: */
/* */ /*************************************************************************/
if exists(select * from sysobjects where id = object_id('up_GetTopicList'))
drop proc up_GetTopicList
go
create proc up_GetTopicList @a_intForumID int ,
@a_intPageNo int ,
@a_intPageSize int as
/*定义局部变量*/ declare @intBeginID int
declare @intEndID int
declare @intRootRecordCount int
declare @intPageCount int declare @intRowCount int
/*关闭计数*/
set nocount on
/*检测是否有这个版面*/ if not exists(select * from forum where id = @a_intForumID)
return (-1)
/*求总共根贴数*/
select @intRootRecordCount = count(*) from bbs where fatherid=0 and forumid=@a_intForumID
if (@intRootRecordCount = 0) --如果没有贴子,则返回零
return 0
/*求开始rootID*/
set @intRowCount = (@a_intPageNo - 1) * @a_intPageSize + 1
/*限制条数*/ set rowcount @intRowCount
select @intBeginID = rootid from bbs where fatherid=0 and forumid=@a_intForumID
order by id desc
/*结束rootID*/
set @intRowCount = @a_intPageNo * @a_intPageSize
/*限制条数*/ set rowcount @intRowCount
select @intEndID = rootid from bbs where fatherid=0 and forumid=@a_intForumID
order by id desc
/*恢复系统变量*/
set rowcount 0 set nocount off
select a.id , a.layer , a.forumid , a.subject , a.faceid , a.hits , a.time , a.UserID , a.fatherid , a.rootid ,
'Bytes' = datalength(a.content) , b.UserName , b.Email , b.HomePage , b.Signature , b.Point
from bbs as a join BBSUser as b on a.UserID = b.ID
where Forumid=@a_intForumID and a.rootid between @intEndID and @intBeginID
order by a.rootid desc , a.ordernum desc
return(@@rowcount) --select @@rowcount
go
up_getTopiclist 3 , 1 , 20 select * from bbs where fatherid=0 order by id desc
select * from bbsuser