`

SQLServer实现树型结构数据查询的存储过程

阅读更多

CREATE PROCEDURE [dbo].[sp_get_tree_relation]
(@table_name nvarchar(50), @id nvarchar(50), @name nvarchar(50), @parent_id nvarchar(50), @startId nvarchar(20))
AS
    declare @v_id int
    declare @v_level int
    declare @sql nvarchar(500)
begin
    create table #temp (id nvarchar(20),name nvarchar(50),parent_id nvarchar(20))
    create table #t1 (id nvarchar(20),name nvarchar(50),parent_id nvarchar(20),level int)
    -- 将需要查询关系的表的数据先导入到临时表
    set @sql='insert into #temp select '+@id+','+@name+','+@parent_id +' from '+@table_name
    exec sp_executesql @sql

    set @v_level=1
    set @v_id=@startId
    insert #t1 select a.id,a.name,a.parent_id,@v_level from #temp a where a.id=@v_id
    while @@rowcount>0
    begin
        set @v_level=@v_level+1
        insert #t1 select a.id,a.name,a.parent_id,@v_level
        from #temp a where a.parent_id in
        (select id from #t1 where level=@v_level-1)
    end

    select a.level,a.id,a.name,a.parent_id,b.name parent_name
    from  #t1 a  left outer join #temp b
    on a.parent_id = b.id order by a.level asc
end

--执行
如果表organize为层级关系的表,则执行存储过程得到组织关系的树型结果
sp_get_tree_relation 'orgnaize','org_id','org_name','parent_org',1

分享到:
评论
1 楼 lostpaJAVA 2009-07-15  

相关推荐

    海狸CMS v1.0

    可实现树型结构的多站点管理,站点之间数据可以互相调用(避免了数据孤岛)。 支持文件(网页、图片、视频)分布式部署到多个服务器 访问压力将被负载到不同服务器,而且可通过文件服务器追加解决数据无限膨胀的存储...

    海狸CMS v1.0 beta 3.zip

    可实现树型结构的多站点管理,站点之间数据可以互相调用(避免了数据孤岛)。 支持文件(网页、图片、视频)分布式部署到多个服务器 访问压力将被负载到不同服务器,而且可通过文件服务器追加解决数据...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例226 对SQLServer数据库进行录入和提取多媒体文件 实例227 对SQL Server数据库进行录入和存储Word文档 8.10 数据备份恢复 实例228 Access数据库备份与还原 实例229 SQL Server数据库备份与恢复 实例230 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例226 对SQLServer数据库进行录入和提取多媒体文件 实例227 对SQL Server数据库进行录入和存储Word文档 8.10 数据备份恢复 实例228 Access数据库备份与还原 实例229 SQL Server数据库备份与恢复 实例230 ...

    海狸CMS(HCMS) 1.0

    可实现树型结构的多站点管理,站点之间数据可以互相调用(避免了数据孤岛)。 2.支持文件(网页、图片、视频)分布式部署到多个服务器 访问压力将被负载到不同服务器,而且可通过文件服务器追加解决数据无限膨胀的...

    Delphi开发范例宝典目录

    实例270 向SQL Server中存储Word文档 348 实例271 从SQL Server中提取Word文档 349 8.4 SQL Server服务器应用 350 实例272 和服务器时间同步 350 实例273 取得网络中的SQL服务器名 351 8.5 数据库维护 ...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例226 对SQLServer数据库进行录入和提取多媒体文件   cc实例227 对SQLcServer数据库进行录入和存储Word文档   8.10 数据备份恢复   cc实例228 Access数据库备份与还原   cc实例229 SQLcServer...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例226 对SQLServer数据库进行录入和提取多媒体文件   cc实例227 对SQLcServer数据库进行录入和存储Word文档   8.10 数据备份恢复   cc实例228 Access数据库备份与还原   cc实例229 SQLcServer...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例065 多级数据库树状结构数据显示 cc实例066 可动态修改节点的树状结构 cc实例067 带复选功能的树状结构 cc实例068 显示磁盘目录 cc实例069 树型提示框 2.7 RichEdit控件典型实例 cc实例070 利用...

    明日科技C#开发入门及项目实战

    实例129 利用存储过程录入数据 实例130 使用oledbdatareader读取文本文件的内容 实例131 使用sqldatareader读取用户登录信息 实例132 使用断开式连接的方式录入数据 实例133 使用断开式连接批量更新数据库中的数据 ...

    小排骨网站采集器|通用的网页采集器

    小排骨采集器的主要功能: ※ 多任务 & 多线程:可以同时执行多个采集任务,每...※ 支持存储过程调用,可以与现有数据库进行整合,构造一个数据处理层。 ※ 支持采集结果在线发布,即以在线方式发布到现有的网站系统。

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例129 利用存储过程录入数据 219 实例130 使用oledbdatareader读取文本文件的内容 222 实例131 使用sqldatareader读取用户登录信息 223 实例132 使用断开式连接的方式录入数据 226 实例133 使用断开式连接批量更新...

    JAVA上百实例源码以及开源项目源代码

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

    高校医务收费系统数据库设计说明书

    同时系统所提供的用户权限设置能够提高系统的安全性,并对不同性质的人员给予不同的权限,为了方便集中管理数据库表和数据源,我们把数据库的连接放到Global.bas模块中,应用ADO接口技术直接和SQL Server 2000数据库...

    java源码包---java 源码 大量 实例

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

    java源码包2

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器...

Global site tag (gtag.js) - Google Analytics