查询所有子栏目的表值函数的sql语句

来源:未知 责任编辑:责任编辑 发表时间:2015-09-17 09:42 点击:
 
前面,给了一个用sql写的根据栏目ID,获取该栏目下所有的子栏目信息。在我们开发过程中,很有可能遇到多表联合查询的情况,这里我有写了一个表值函数也是关于查询子栏目的,好处就是可以当作函数调用那样使用,并且返回数据集合,其中还有栏目的层次关系。
 
 1 create function myFun(@id as int)    --创建表函数名称,参数是id获取其他,
 2 returns @temp table                    --这里返回一个自己创建的表,里面的字段根据自己的需要设
 3 (
 4     [id] int,  
 5     [Name] varchar(100), 
 6     [parentid] int, 
 7     [levels] int        --这里说明一下,上面的字段是根据自己要取数据的表而定的,levels表示栏目层次的,是必须有的!
 8 )  www.2cto.com  
 9 as 
10 begin        
11     declare @level as int    --声明一个变量,用于保存栏目信息层次索引
12     select @level = 0
13     insert into @temp select id,Name,parentid,@level from Sub where id=@id
14 --先根据id获取根据节点的数据,@level初始为0,表示根目录
15     while @@rowcount >0
16         begin
17             set @level=@level+1        --设置每一层子栏目层次索引
18             insert into @temp
19             select a.id,a.Name,a.parentid,@level from Sub a inner join @temp t
20             on a.parentid=t.id and t.levels=@level-1
21             --根据该栏目的父节点,查询该层次的栏目信息
22         end 
23     return    --这里别忘了return,不然不给查询哦!
24 end 
 
 
 
作者 Suvens
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • sql常见面试题
    • SQL SERVER 2005性能之跟踪
    • LINUX上RMAN自动备份脚本
    • sql server 列转行
    • SQL SERVER2008日常自动化备份
    • SQL Server 2005 镜像构建手册
    • SQL编程(一)
    • 如何将多个SQL查询统计结果一次显示出来
    • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1