树形结构的数据库实现,存储过程实现添加删除查询功能

原创 2015年11月19日 23:51:26
USE [JPKCDB]
GO
/****** Object:  StoredProcedure [dbo].[BbsDelete]    Script Date: 2015/11/19 23:32:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[BbsDelete]

    @ID INT 
)   
AS 
    DECLARE @LID AS INT, @RID AS INT, @WID AS INT, @DID AS INT, @NUM as int
set @NUM=0
    SET @DID = 0  
    SELECT @DID = ID, @LID = LID, @RID = RID, @WID = RID - LID + 1 FROM Bbs WHERE ID = @ID  
    IF @DID != 0  
    BEGIN 
select @NUM=@WID/2
        DELETE FROM Bbs WHERE LID BETWEEN @LID AND @RID

        UPDATE Bbs SET RID = RID - @WID WHERE RID > @RID
        UPDATE Bbs SET LID = LID - @WID WHERE LID > @RID  
update Bbs set ID=ID-@NUM where ID>@ID
update Bbs set FID=FID-@NUM where FID>@ID


    END 
    SELECT @DID  






USE [JPKCDB]
GO
/****** Object:  StoredProcedure [dbo].[BbsInsert]    Script Date: 2015/11/19 23:32:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER   PROCEDURE [dbo].[BbsInsert]  
(  
    @Root INT,  
@tieName nvarchar(100),
@bbsTitle nvarchar(50),
@detail nvarchar(2000),
@pubTime nchar(19),
@publisherId INT,
@tp INT,
@did INT,
@state INT
)  
AS 
    DECLARE @LID AS INT,@RID AS INT,@NID AS INT,@Tree AS INT,@NkID AS INT,@CNT AS INT

SET @LID=0
    SET @RID = 1  
    SET @NID = 0  
    SET @Tree = 0  
SET @CNT=0



-- 表中为空,没有树根节点,则先插入树根节点
set @nkid=(select count(*)+1 from Bbs)
IF (@nkid=1)
BEGIN
INSERT INTO Bbs(id,LID,RID,Tree,fid,tieName,bbsTitle,detail,pubTime,publisherId,tp,did,state)      VALUES (0,1,2,0,-1,@tieName,@bbsTitle,@detail,@pubTime,@publisherId,@tp,@did,@state)  
END
ELSE
BEGIN


--在根节点下插入



SELECT @LID=LID,@RID = RID, @Tree = Tree + 1  
FROM Bbs WHERE ID = @Root  


SET @NID=@ROOT+(@RID-@LID+1)/2

UPDATE  Bbs  SET RID = RID + 2 WHERE RID  >= @RID 
UPDATE  Bbs  SET LID = LID + 2 WHERE LID > @RID  
UPDATE  Bbs  SET ID = ID + 1 WHERE LID > @RID
UPDATE  Bbs  SET fID = fID + 1 WHERE fid> @root AND RID>@RID


INSERT INTO Bbs(id,LID,RID,Tree,fid,tieName,bbsTitle,detail,pubTime,publisherId,tp,did,state)      VALUES (@NID,@RID,@RID + 1,@Tree,@root,@tieName,@bbsTitle,@detail,@pubTime,@publisherId,@tp,@did,@state)  

SET @NkID = SCOPE_IDENTITY()  

SELECT @NkID  


END





USE [JPKCDB]
GO
/****** Object:  StoredProcedure [dbo].[BbsSelect]    Script Date: 2015/11/19 23:32:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[BbsSelect]
-- Add the parameters for the stored procedure here
@Root INT,
@Tree INT
AS
BEGIN


SELECT *
FROM Bbs AS Z,Bbs AS P
WHERE P.ID=@Root
AND Z.LID>=P.LID AND Z.RID <=P.RID
AND (@Tree = 0 OR Z.Tree<=P.Tree+@Tree)
ORDER BY Z.LID ASC
END





版权声明:本文为博主原创文章,转载请注明博客地址与作者。

相关文章推荐

页面中用实现的树形结构 《添加,删除,添加全部,删除全部》

function addAll(typeStr){ alert(typeStr); var this_sel = null; if(typeStr!=null){  if(typeStr=="WFR"...

Jquery实现无限级树状结构并动态添加增删改等编辑功能

打开演示地址 http://www.56gee.com/Detail/2012/04/11/8AEB74E423/ Jquery实现无限极树状结构并动态添加增删改等编辑功能——56...

go 数组和数组切片比较

一、数组  与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列。 (1)数组的创建。 数组有3种创建方式:[length]Type 、[N]Type{value1, value...

zTree树形结构框架连接数据库实现增删改

1、zTree介绍: zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。 专门适合项目开发,尤其是 树状菜单、树状数据的W...
  • btt2013
  • btt2013
  • 2016年04月01日 21:54
  • 5635

MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询

的撒旦撒旦啊大大啊

mysql读取树形结构所有子节点 mysql递归查询 详解 存储过程详解 查询所有子节点详解

call Pro_GetUnderOrg('a2a8d12675284d5cb38c879e542aac9f');   create procedure Pro_GetAllChildrenT...

Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理 .

在网站开发中经常遇到级联数据的展示,比如选择城市的时候弹出的省市县选择界面。很多前端制作人员习惯于从JSON中而不是从数据库中获取省市县数据。那么在选择了省市县中的某一个城市 ,存储到数据库中需要存储...

Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理

在网站开发中经常遇到级联数据的展示,比如选择城市的时候弹出的省市县选择界面。很多前端制作人员习惯于从JSON中而不是从数据库中获取省市县数据。那么在选择了省市县中的某一个城市 ,存储到数据库中需要存储...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:树形结构的数据库实现,存储过程实现添加删除查询功能
举报原因:
原因补充:

(最多只允许输入30个字)