论坛添加回复的存储过程,第一次写,竟然顺利通过,散分:)

aoeiuvcom 2004-07-05 10:49:25
命名可能不符合某些人的“胃口”,我只是为了能跟数据库能很好的联系起来:)

对于正在写的论坛,分页已经用了存储过程,现在打算把其他复杂的也放入存储过程,

这样做的好处就是:ASP页面好简单呀!

不知道有什么坏处?

整个数据库里没有一个是自动累加的字段,都是通过某个表,每次用时取出来+1

这样,整个数据库想怎么改就怎么改,想删想加,不用再为ID号发愁了:)

已经使用存储过程的有:

1、顶贴列表
2、主题贴分页
3、读取主题帖
4、读取回复贴并分页
5、添加回复

正在做的有:
1、添加主题贴

打算做的有:
1、用户登陆验证
2、修改帖子
3、论坛传呼

希望对存储过程有经验的朋友能给点提示或者帮助,该加强什么或者回避什么:)

我的网站:http://www.aoeiuv.com

希望能在短期内放上自己写的论坛:)

------------------------------------------------------------
CREATE PROCEDURE [dbo].[cmdClubInsertReply]
(
@NextTimerID int,
@NextReplyID int,
@ID_Member int,
@mem_Name nvarchar(32),
@nr_PostIP int,
@ID_Note int,
@nr_Reply smallint,
@nr_Face tinyint,
@nr_HTML tinyint,
@nr_Size int,
@nr_Data ntext
)
AS
BEGIN
declare @ID_Club smallint
declare @nr_ID int
declare @nr_No smallint
declare @nr_OrderNo smallint
declare @nr_Indent smallint
declare @p1 int
declare @p2 int

set nocount on

-- 是否存在主题贴
if not exists(Select nt_ID from a_tblNoteList where nt_ID=@ID_Note and nt_Del=0)
return (-1)

Select @ID_Club=ID_Club, @p1=nt_Lock, @p2=nt_Reply from a_tblNoteList where nt_ID=@ID_Note

-- 判断是否被设为禁止回复
if @p1 > 0
return (-1)

set @nr_No = @p2 + 1

if @nr_Reply > 0 -- 回复非主题贴
begin
-- 检查是否被删
if not exists(select nr_ID from a_tblNoteReply where ID_Note=@ID_Note and nr_No=@nr_Reply and nr_Del=0)
return (-1)

select @nr_OrderNo=nr_OrderNo, @nr_Indent=nr_Indent from a_tblNoteReply where ID_Note=@ID_Note and nr_No=@nr_Reply

-- 插入
Update a_tblNoteReply set nr_OrderNo=nr_OrderNo+1 where ID_Note=@ID_Note and nr_OrderNo>=@nr_OrderNo

-- 缩进
set @nr_Indent = @nr_Indent + 1
end
else
begin
set @nr_OrderNo = @p2 + 1
set @nr_Indent = 1
end

-- 得到最新的时间ID号
Select @p1=inf_Num from a_tblWebInfo where ID=@NextTimerID
Update a_tblWebInfo Set inf_Num=inf_Num+1,inf_Time=getdate() where ID=@NextTimerID

set @p1 = @p1 + 1

-- 更新主题贴
Update a_tblNoteList Set nt_Timer=@p1, nt_Reply=nt_Reply+1, nt_TimeReply=getdate(),name_Reply=@mem_Name
Where nt_ID=@ID_Note

-- 更新Club信息
Update a_tblClub Set clb_Update=getdate(),clb_Reply=clb_Reply+1 where clb_ID=@ID_Club

-- 更新用户信息
Update a_tblMember Set num_Reply=num_Reply+1 where mem_ID=@ID_Member

-- 最新回复ID
Select @p1=inf_Num from a_tblWebInfo where ID=@NextReplyID
Update a_tblWebInfo Set inf_Num=inf_Num+1,inf_Time=getdate() where ID=@NextReplyID
set @nr_ID = @p1 + 1

set nocount off

INSERT INTO a_tblNoteReply (ID_Note ,
nr_ID ,
ID_Club ,
nr_No ,
nr_OrderNo ,
nr_Indent ,
nr_Reply ,
nr_Del ,
ID_Member ,
nr_PostIP ,
nr_Size ,
nr_Face ,
nr_Lock ,
nr_HTML ,
nr_Type2 ,
nr_TimePost ,
nr_TimeModify ,
nr_Data)
VALUES (@ID_Note ,
@nr_ID ,
@ID_Club ,
@nr_No ,
@nr_OrderNo ,
@nr_Indent ,
@nr_Reply ,
0 ,
@ID_Member ,
@nr_PostIP ,
@nr_Size ,
@nr_Face ,
0 ,
@nr_HTML ,
0 ,
getdate() ,
getdate() ,
@nr_Data
)
END
GO
...全文
694 94 打赏 收藏 转发到动态 举报
写回复
用AI写文章
94 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoeiuvcom 2004-07-09
  • 打赏
  • 举报
回复
To MagicYangCN(魔术师·杨)

服务器配置是什么?

论坛的在线人数应该不会高

耗资源的功能也只对会员开放

用了存储过程,ASP页面很简单,只是检查一下提交的数据是否合法就可以了

而且,要转.Net,也会非常的方便:)


赶上这次的空间支持MSSQL,不用太可惜了:::
fkphp 2004-07-09
  • 打赏
  • 举报
回复
UP
------------------------------------
fkasp
------------------------------------
体验速度,体验CSDN新版论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=3108679
dragonlyf 2004-07-09
  • 打赏
  • 举报
回复
厉害
MagicYangCN 2004-07-09
  • 打赏
  • 举报
回复
存储过程的确很快啊,但是服务器的负担就加重了!
原来单位的管理系统每次要从数万条记录中检索,用了存储过程检索与分页后速度非常快,只是单位的服务器太差了,服务器经常挂。。。没办法只有用sql语言+索引,速度也还行。。
aoeiuvcom 2004-07-09
  • 打赏
  • 举报
回复
没有建议的:(。。下班前结了

这两天的时间,又改了好多

论坛中,插入回复和删除回复的存储过程是最复杂的,因为涉及读取和更新的地方太多了!

其余的,几乎都没什么If,一条线路做到底

争取这个月放上MSSQL版的论坛
aoeiuvcom 2004-07-09
  • 打赏
  • 举报
回复
以后再也不发这种贴了

结贴页没有个平均分配功能,挨个写,不小心还给了自己1分
m1_1m 2004-07-06
  • 打赏
  • 举报
回复
这就是能力的体现呀!说明你已撑握了一定的技能!
xzhy80 2004-07-06
  • 打赏
  • 举报
回复
up
javasam 2004-07-06
  • 打赏
  • 举报
回复
study
freeiceliu 2004-07-06
  • 打赏
  • 举报
回复
凑凑热闹,我也来接分
iknowwn 2004-07-06
  • 打赏
  • 举报
回复
俺也来接
zhengli1999 2004-07-06
  • 打赏
  • 举报
回复
接分。。。
dboycool 2004-07-06
  • 打赏
  • 举报
回复
oo,为什么没人提些建议性的问题呢?
xzq686 2004-07-06
  • 打赏
  • 举报
回复
:)
互相学习
qwater 2004-07-06
  • 打赏
  • 举报
回复
接分
blueseahill 2004-07-06
  • 打赏
  • 举报
回复
UP!
chenfield 2004-07-06
  • 打赏
  • 举报
回复
学习
king2003 2004-07-06
  • 打赏
  • 举报
回复
帮顶
S.F. 2004-07-06
  • 打赏
  • 举报
回复
小儿科,写过4000行得sql吗?动态sql+自定义函数+嵌套事务+动态SQL
sleeping100 2004-07-06
  • 打赏
  • 举报
回复
学习
加载更多回复(74)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧