当前位置: 首页 > 图文教程 > 网络编程 > ASP > 用排序串字段实现树状结构(存储过程)

ASP
Adodb.Command 平时很少注意到的一个参数
Asp.Net控件加载错误的解决方法
远程连接access数据库的方法
创建具有JScript的HTML的XMLHTTP
在Asp中如何快速优化分页的技巧
用VB生成DLL封装ASP代码,连接数据库
RS.OPEN SQL,CONN,A,B 全接触
利用adodb.stream直接下载任何后缀的文件(防盗链)
用ASP编程控制在IIS建立Web站点的程序代码
使用VBScript操作Html复选框(CheckBox)控件
把文章内容中涉及到的图片自动保存到本地服务器
两个不同数据库表的分页显示解决方案
使用组件封装数据库操作(一)
使用组件封装数据库操作(二)
如何在pb中创建COM组件,并在asp中调用并返回结果集?
用ASP和Microsoft.XMLDOM分析远程XML文件
浅谈无刷新取得远程数据技术
将ASP纪录集输出成n列的的表格形式显示的方法
在ASP中通过oo4o连接Oracle数据库的例子
Server Application Error详细解决办法

ASP 中的 用排序串字段实现树状结构(存储过程)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 77 ::
收藏到网摘: n/a

  加贴存储过程:
if exists (select * from sysobjects where id = object_id("lybsave"))
   drop proc lybsave
CREATE PROCEDURE [lybsave] @keyid int=0,@guestname varchar(20),@guestitle varchar(100),@guestcomm
text,@guestemail varchar(50)='',@emailflag bit=0,@fromip varchar(15),@recimail varchar(50) OUTPUT
AS
DECLARE @ostr varchar(30),@rootid int,@lybid int,@ostrs varchar(30),@l tinyint,@tdt datetime,@putdate
varchar(10),@puttime varchar(5),@eflag bit
select @tdt=getdate()
select @putdate=convert(varchar(4),datepart(yy,@tdt))+'-'+left('0'+convert(varchar(2),datepart(mm,@tdt)),2)
+'-'+left('0'+convert(varchar(2),datepart(dd,@tdt)),2)
select @puttime=left('0'+convert(varchar(2),datepart(hh,@tdt)),2)+':'+left('0'+convert(varchar(2),datepart
(mi,@tdt)),2)
select @ostr='',@rootid=0,@lybid=0,@l=0
if (@guestemail='') select @emailflag=0
If @keyid=0  --发新贴
  goto newin
ELSE
begin
  SELECT @lybid=lybid,@rootid=rootid,@ostr=orderstr,@recimail=guestemail,@eflag=emailflag from guestbook
where lybid=@keyid
  IF @lybid=0  --回复贴没找到,当新贴发表
   goto newin
  ELSE
   BEGIN
    if (@eflag=0 and @guestemail<>'[email protected] abc') select @recimail=''  --如果是版主回复且指定发邮件给提
问者,则不管发贴者是否要求回复,后面的abc相当于管理密码
    if (@rootid=0) select @rootid=@lybid
    select @ostrs=@ostr+'%',@lybid=0
    select top 1 @lybid=lybid,@ostrs=orderstr from guestbook where rootid=@rootid and (orderstr like
@ostrs) and lybid<>@keyid order by orderstr
    if (@lybid=0) select @ostr=@ostr+char(122)
    else
     begin
      select @l=len(@ostrs)
      select @ostr=left(@ostrs,@l-1)+char(ascii(substring(@ostrs,@l,1))-1)
     end
    goto newin
   end
end

newin:
    INSERT into guestbook
(guestname,guestitle,guestcomm,putdate,puttime,guestemail,emailflag,rootid,fromip,orderstr) values
(@guestname,@guestitle,@guestcomm,@putdate,@puttime,rtrim(@guestemail),@emailflag,@rootid,@fromip,@ostr)

删贴(剪枝)存储过程:

if exists (select * from sysobjects where id = object_id("lybdel"))
   drop proc lybdel
CREATE PROCEDURE [lybdel] @keyid int
AS
DECLARE @ostr varchar(30),@rootid int,@lybid int
select @ostr='',@rootid=0,@lybid=0
SELECT @ostr=orderstr,@rootid=rootid,@lybid=lybid from guestbook where lybid=@keyid
if (@lybid<>0)
  BEGIN
    if (@rootid=0) select @rootid=@lybid
    SELECT @ostr=@ostr+'%'
    DELETE FROM guestbook where orderstr like @ostr and rootid=@rootid or lybid=@rootid
  END