CREATE FUNCTION dbo.Fun_Get_Category_TreeInfo ( @CategoryID varchar(10) -- 若 @CategoryID = "" 则表示查询所有的节目,也就是父级代码为 -1 下的所有节目 ) RETURNS @TreeInfo Table ( [Category_id] [int] not null, [Parent_id] [int] null, [Category_name] [varchar](50) null, [Code] [varchar](10) null, [AllowDownAll] [char](1), [Operator_id] [smallint], [Define_time] [datetime], [Flag] [char](1), [categorypath] [varchar](100), [Level] [int] NOT NULL, [LevelFlag] [varchar] (200) NOT NULL ) AS BEGIN DECLARE @level As int SELECT @level = 0 if @CategoryID != '' Insert Into @TreeInfo SELECT Category_ID, Parent_ID, Category_Name, Code, allowDownAll,Operator_ID,Define_Time,Flag,Categorypath,@level, 'NULL-> ' + Cast(Category_ID As varchar(10)) FROM [Act_Category] WHERE [Category_ID] = @CategoryID else Insert Into @TreeInfo SELECT Category_ID, Parent_ID, Category_Name, Code, allowDownAll,Operator_ID,Define_Time,Flag,Categorypath,@level, 'NULL-> ' + Cast(Category_ID As varchar(10)) FROM [Act_Category] WHERE [Parent_ID] = -1 WHILE @@ROWCOUNT > 0 BEGIN SET @level = @level + 1 INSERT INTO @TreeInfo SELECT E.[Category_ID], E.[Parent_ID], E.[Category_Name], E.[Code], E.[allowDownAll],E.[Operator_ID],E.[Define_Time],E.[Flag],E.[Categorypath], @level, T.[LevelFlag] + '->' + Cast(E.[Category_ID] As varchar(10)) FROM [Act_Category] AS E JOIN @TreeInfo AS T ON E.[Parent_ID] = T.[Category_ID] AND T.[Level] = @level - 1 END Return END
分享到:
相关推荐
sqlserver递归查询树结构的表的根结点子最里层的子结点
在SQL Server 2008中实现递归查询来获取所有上级或下级数据是一项非常实用的技术,尤其是在处理具有层次结构的数据时。本篇将详细解释如何利用Common Table Expressions (CTE)来完成这样的查询,并对提供的示例代码...
1. 数据准备:在SQL Server 2000中,创建一个表来存储树形结构的数据。例如,可以创建一个名为`Categories`的表,包含`ID`(主键)、`ParentID`(父节点ID)和`Name`(节点名称)等字段。这样,每个节点都可以通过`...
SQL Server 中递归查找子节点和父节点 在关系数据库管理系统中,特别是在 SQL Server 中,递归查找子节点和父节点是一种常见的操作。这种操作可以应用于树形结构的数据存储和查询中,例如组织结构、目录结构、分类...
SQL Server中的递归查询主要通过CTE(公共表表达式)来实现,它是一种非常强大的工具,特别适用于处理层次结构数据。CTE是T-SQL脚本中的临时结果集,可以用于复杂的查询,尤其是需要递归操作的情况。本文将深入探讨...
当初花了很长时间查资料、逛博客 终于搞定的排序 以及对于处理菜单列表显示的 问题。希望对你们有帮助。压缩包包含数据表创建脚本 以及 实现功能的语句 表结构字段 id、name、url、pid、indexs
在SQL Server中,递归遍历可以通过存储过程配合游标实现,但这种方法在实际应用中可能会遇到一些问题。 首先,SQL Server在声明游标时,默认的作用域是连接级的,即全局的。这意味着在同一连接过程中,不能创建两个...
### SQL Server 2005 中使用 CTE 实现递归 #### 一、CTE 递归原理 在 SQL Server 2005 中,使用公共表表达式(Common Table Expression, CTE)实现递归是一种高效且直观的方式。递归 CTE 通常由两部分构成:定位...
10. **服务与组件**:如SQL Server Agent、Analysis Services、Notification Services等,都是SQL Server 2000中的重要组成部分,掌握它们的功能和使用方法,能增强数据库系统的功能和服务。 通过深入学习这些高级...
在SQL中,递归查询是一种强大的工具,常用于处理层级数据,例如组织结构、树形菜单等。在给定的场景中,我们需要根据一个特定的节点ID查询出该节点及其所有子节点,并将这些结果存储在一个临时表中。以下是实现这一...
在SQL Server 2008中,表达式递归查询是一种强大的工具,尤其适用于处理具有层级关系的数据,如组织结构、目录树或者分类系统。这种技术主要依赖于公用表表达式(Common Table Expression, CTE),它允许在单个查询...
在SQL Server 2000中,DML触发器主要针对INSERT、UPDATE和DELETE操作,而DDL触发器则响应对数据库结构的改变,如CREATE、ALTER和DROP等语句。 创建触发器时,需指定触发器的触发时机,如FOR INSERT、FOR UPDATE、...
将多行数据生成一个一个字符患的递归脚本,方便,快捷。要顶哦。
以阶层为例子说存储过程中递归的调用。 递归 CREATE PROC [dbo].[usp_spFactorial] @InputValue INT, @OuputValue INT OUTPUT AS BEGIN DECLARE @InValue INT; DECLARE @OutValue INT; IF(@InputValue!=1) ...
如果这个项目中包含了这个组件,那么你需要研究其API和文档,理解如何与VS2005和SQL Server 2000配合使用,以及如何配置和操作这个控件来展示无限级树形菜单。 总结来说,通过VS2005和SQL Server 2000,我们可以...
### ORACLE和SQL Server的语法区别 #### 一、概述 本文主要介绍Oracle与SQL Server在SQL语言层面的异同之处,...通过遵循上述指导原则,可以有效地将Oracle应用程序移植到SQL Server环境中,同时保持其功能性和性能。
在SQL Server中,递归查询是一种处理层次结构数据的有效方法,尤其适用于树形结构的数据模型。递归查询允许我们从一个起始点开始,沿着层级关系遍历直到达到指定条件或者遍历完所有关联的记录。在SQL Server中,递归...
### PostgreSQL与MS SQL Server在过程语言中的差异 在数据库领域,PostgreSQL 和 MS SQL Server 都是非常受欢迎的关系型数据库管理系统。两者在很多方面都提供了强大的功能支持,但在具体实现细节上存在不少差异。...
在SQL Server中,无限级分类是一个常见的需求,特别是在构建具有层级结构的数据模型时,如组织架构、产品分类等。通常,实现无限级分类有两种主要方法:递归算法和非递归算法。本篇讨论的是非递归算法的一种特殊实现...
《SQL Server 2005 技术内幕:T-SQL查询源码》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中使用的SQL扩展版本,它在标准SQL的基础上增加...