zoukankan      html  css  js  c++  java
  • SQLServer实现树型结构数据查询的存储过程,类似oracle的connect by

    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
  • 相关阅读:
    视差滚动(Parallax Scrolling)插件补充
    10个最佳的触控手式的JavaScript框架(转)
    50个必备的实用jQuery代码段(转)
    PhoneGap开发不可或缺的五件装备
    优化移动网站的9大窍门(转)
    WSADATA
    htons
    INADDR_ANY
    SOCKADDR_IN
    mysql_query()与mysql_real_query()
  • 原文地址:https://www.cnblogs.com/baishahe/p/1024900.html
Copyright © 2011-2022 走看看