SQL2000 函数递归显示路径
2011-05-19 18:49
260 查看
----------------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2011-05-19 17:25:59
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
-- Blog : http://blog.csdn.net/htl258 ----------------------------------------------------------------------------------
--> 生成测试数据表: [Tree]
IF OBJECT_ID('[Tree]') IS NOT NULL
DROP TABLE [Tree]
GO
CREATE TABLE [Tree] ([ID] [int],[Text] [nvarchar](10),[PID] [int])
INSERT INTO [Tree]
SELECT '1','A',NULL UNION ALL
SELECT '2','B','1' UNION ALL
SELECT '3','C','2' UNION ALL
SELECT '4','D','3'
--SELECT * FROM [Tree]
GO
-->SQL查询如下:
IF OBJECT_ID('getdpt')>0
DROP FUNCTION getdpt
GO
CREATE FUNCTION GetDPT(@Id INT)
RETURNS NVARCHAR(200)
AS
BEGIN
DECLARE @dptn NVARCHAR(50), @dpti NVARCHAR(20)
SELECT @dptn = [Text], @dpti = PID
FROM Tree
WHERE ID = @Id
RETURN
CASE
WHEN ISNULL(@dpti, '')='' THEN @dptn
ELSE ISNULL(dbo.GetDPT(@dpti)+'->', '')+@dptn
END
END
GO
SELECT dbo.GetDPT(4)
/*
A->B->C->D
(1 行受影响)
*/
-- Author : htl258(Tony)
-- Date : 2011-05-19 17:25:59
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
-- Blog : http://blog.csdn.net/htl258 ----------------------------------------------------------------------------------
--> 生成测试数据表: [Tree]
IF OBJECT_ID('[Tree]') IS NOT NULL
DROP TABLE [Tree]
GO
CREATE TABLE [Tree] ([ID] [int],[Text] [nvarchar](10),[PID] [int])
INSERT INTO [Tree]
SELECT '1','A',NULL UNION ALL
SELECT '2','B','1' UNION ALL
SELECT '3','C','2' UNION ALL
SELECT '4','D','3'
--SELECT * FROM [Tree]
GO
-->SQL查询如下:
IF OBJECT_ID('getdpt')>0
DROP FUNCTION getdpt
GO
CREATE FUNCTION GetDPT(@Id INT)
RETURNS NVARCHAR(200)
AS
BEGIN
DECLARE @dptn NVARCHAR(50), @dpti NVARCHAR(20)
SELECT @dptn = [Text], @dpti = PID
FROM Tree
WHERE ID = @Id
RETURN
CASE
WHEN ISNULL(@dpti, '')='' THEN @dptn
ELSE ISNULL(dbo.GetDPT(@dpti)+'->', '')+@dptn
END
END
GO
SELECT dbo.GetDPT(4)
/*
A->B->C->D
(1 行受影响)
*/
相关文章推荐
- Java程序打包后图片不显示:Java的insertIcon函数打包后,路径问题
- 递归显示文件夹下的所有目录(带绝对路径):并且解决中文乱码问题
- Linux下递归删除路径的函数
- 编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 –> 12345,要求使用递归,并且函数体代码不超过8行
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- 目录递归和相对路径函数
- 妙用MSSQL的REVERSE()反转函数显示文件路径的文件名称
- warning C4717: “operator>>”: 如递归所有控件路径,函数将导致运行时堆栈溢出
- python shell中python os模块实用函数(含改变当前工作路径、显示当前目录等)
- JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法
- C语言链表基本函数的递归实现
- nodejs + Encharjs 搭建服务器显示领导行程路径
- 函数,const指针参数,递归,指向函数的指针
- 在Win32程序中显示Dos调试窗口,可暂停(AllocConsole,WriteConsole,FreeConsole函数,GetStdHandle函数取得输入句柄)
- 新浪中用来显示flash的函数
- xcode生成文件路径和路径显示
- 函数模板、模板重载、函数模板显示具体化(explicit specialization)
- python 路径函数
- 递归专练A 递归的函数
- 转载:Windows上的路径操作函数