sqlserver通过存储过程遍历树

问题描述

sqlserver通过存储过程遍历树

表结构为 ID Name ParentID
如何通过一个存储过程 searchID (ID,level)遍历子层?
其中level为层差
例如 searchID (1,2)即代表ID为1

深度为2的层的所有节点?

解决方案

你可以通过递归来实现,写一个通用函数searchid(ID, level)来遍历当前层,里再调用searchid(ID, level + 1)来遍历下一层

遍历当前层,可以用游标来实现,参考如下

http://www.cnblogs.com/moss_tan_jun/archive/2011/11/26/2263988.html

时间: 2024-08-03 17:33:40

sqlserver通过存储过程遍历树的相关文章

ql erver-sqlserver通过存储过程遍历树

问题描述 sqlserver通过存储过程遍历树 表结构为 ID Name ParentID 如何通过一个存储过程 searchID (ID,level)遍历树? 其中level为层差 解决方案 create table createtable( id int, name varchar(100), parentID int ) insert into createtable(ID,Name,ParentID ) values(1,'1',0); insert into createtable(I

SqlServer 分页存储过程

  SqlServer 分页存储过程 create proc [dbo].[proc_Opinion_BaseInfo] @TableName varchar(4000), @PkField varchar(100), @PageIndex int=1, @PageSize int=10, @SqlWhere nvarchar(4000), @RowCount bigint output, @PageCount bigint output as if(@SqlWhere='1') set @Sq

js用闭包遍历树状数组的方法

 这篇文章主要介绍了js中用闭包遍历树状数组的方法,需要的朋友可以参考下 做公司项目时,要求写一个方法,方法的参数为一个菜单数组集合和一个菜单id,菜单数组的格式为树状json,如下面所示: 代码如下:[{"id":28,"text":"公司信息","children":[        {"id":1,"text":"公司文化"},        {"id

oracle 怎么调用sqlserver的存储过程

问题描述 oracle 怎么调用sqlserver的存储过程 RT. 我在orcale 11G里面写了个存储过程.需要调用 sqlserver 里面的 存储过程,该怎么做? sqlserver 的查询功能,存储过程名称已经获得. ** 注意. 还要传一个参数过去,并且带有返回值的哦.** 解决方案 这个 我知道一个偏门的方法 就是,,,oracle 里面 调用java代码 ,在Java代码里面 调用sqlserver 的存储过程

php遍历树的常用方法汇总_php技巧

本文实例讲述了php遍历树的常用方法.分享给大家供大家参考.具体如下: 一.递归的深度优先的算法: <?php define('DS', DIRECTORY_SEPARATOR); function rec_list_files($from = '.') { if(!is_dir($from)) { return array(); } $files = array(); if($dh = opendir($from)) { while(false !== ($file = readdir($dh

编程-在树结构中,前序/后续遍历树的顺序,为什么是这样?

问题描述 在树结构中,前序/后续遍历树的顺序,为什么是这样? 解决方案 前序遍历,先访问根,再访问当前根下的第一个节点,如果第一个节点仍然有子节点,就把这第一个子节点作为根节点在访问这个根节点的第一个子节点, 依次循环下去,直到无子节点为止,再访问上一级根节点的第二个节点,然后循环... 解决方案二: [LeetCode]根据前序和中序遍历建树 && 根据中序遍历和后续遍历建树

SqlServer中存储过程中将Exec的执行结果赋值给变量输出

原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字段值,然后再利用这些值进行逻辑运算(自己的逻辑),最后将结果输出.话不多说,直接上图,看是否是你想要的结果: 说明:[区域1为要用来测试的表][ 区域2 为表中数据][区域3 为表中数据jan+feb+mar列值的和5] 存储过程代码如下: 从上图可以看出既然可以拿到jan .feb.mar列的值,

使用SqlServer CTE递归查询处理树、图和层次结构_MsSql

CTE(Common Table Expressions)是从SQL Server 2005以后版本才有的.指定的临时命名结果集,这些结果集称为CTE. 与派生表类似,不存储为对象,并且只在查询期间有效.与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次.使用CTE能改善代码可读性,且不损害其性能. 递归CTE是SQL SERVER 2005中重要的增强之一.一般我们在处理树,图和层次结构的问题时需要用到递归查询. CTE的语法如下 WITH CTE AS ( SELECT Em

使用SqlServer CTE递归查询处理树、图和层次结构

CTE(Common Table Expressions)是从SQL Server 2005以后版本才有的.指定的临时命名结果集,这些结果集称为CTE. 与派生表类似,不存储为对象,并且只在查询期间有效.与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次.使用CTE能改善代码可读性,且不损害其性能. 递归CTE是SQL SERVER 2005中重要的增强之一.一般我们在处理树,图和层次结构的问题时需要用到递归查询. CTE的语法如下 WITH CTE AS ( SELECT Em