当前位置: 数据库>sqlserver
sql函数实现递归查询示例
来源: 互联网 发布时间:2014-08-29
本文导语: 本节内容: sql函数实现递归查询 表结构如下: id pid title 1 0 这是主题贴 2 1 这是跟贴1 3 2 这是跟贴2 4 3 这是跟贴3 此表的树层次为三...
本节内容:
sql函数实现递归查询
表结构如下:
id pid title
1 0 这是主题贴
2 1 这是跟贴1
3 2 这是跟贴2
4 3 这是跟贴3
1 0 这是主题贴
2 1 这是跟贴1
3 2 这是跟贴2
4 3 这是跟贴3
此表的树层次为三四层结构.
要求实现通过传入id值,求最顶层的id值,如传入id=4,得出最顶层id=1的主题贴。
sql递归查询代码:
代码示例:
--创建函数
create function 函数名(@keyno int)
returns int
as
begin
declare @pid int,@tmppid int
set @tmppid = (select [pid] from [表名] where [id] = @keyno)
if (@tmppid=0)
set @pid = (select [id] from [表名] where [id] = @keyno)
else
set @pid = [数据库名].[当前数据库用户].[函数名](@tmppid)
return @pid
end
--调用
SET DATEFIRST 1
SELECT [数据库名].[当前数据库用户].[函数名](参数) as 'aa'
--删除函数
DROP FUNCTION 函数名
create function 函数名(@keyno int)
returns int
as
begin
declare @pid int,@tmppid int
set @tmppid = (select [pid] from [表名] where [id] = @keyno)
if (@tmppid=0)
set @pid = (select [id] from [表名] where [id] = @keyno)
else
set @pid = [数据库名].[当前数据库用户].[函数名](@tmppid)
return @pid
end
--调用
SET DATEFIRST 1
SELECT [数据库名].[当前数据库用户].[函数名](参数) as 'aa'
--删除函数
DROP FUNCTION 函数名
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。