无限级分类查询一个栏目下的所有子栏目
来源:互联网 发布:计划网络图绘制软件 编辑:程序博客网 时间:2024/06/09 16:18
接近通用:(本存储过程有个弊端就是,当你查询的子栏目加起来的字符串的长度大于nvarchar(max)的时候,字符串会自动截取,就会出现有些子栏目查不出来的情况,所有只能查询那些子栏目适中的无限级联)
------------------------------------------------------
---存储过程-无限级联-获得该栏目下的所有子栏目---
------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UP_limitcascade]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[UP_limitcascade]
GO
create procedure UP_limitcascade
@catid int,--栏目ID,
@table nvarchar(50),--表名
@idfield nvarchar(50),--栏目列名
@parentidfield nvarchar(50)--栏目父级列名
as
declare @catstr nvarchar(max)--该栏目下的所有子栏目的id字符串:如(1,2)
declare @tempcatstr nvarchar(max)--中间过度变量1
declare @tempcatstr1 nvarchar(max)--中间过度变量2
declare @catcount int--栏目的子栏目总数
declare @sql nvarchar(max)
set @sql = 'select @catcount=count(*) from '+@table+' where '+@parentidfield+' ='+str(@catid)
exec sp_executesql @sql,N'@catcount int output',@catcount output
set @catstr = cast(@catid as nvarchar)
set @tempcatstr1 = cast(@catid as nvarchar)
set @tempcatstr = ''
while(@catcount>0)
begin
set @sql='select @catstr=@catstr+'',''+cast('+@idfield+' as nvarchar),@tempcatstr=@tempcatstr
+'',''+cast('+@idfield+' as nvarchar) from '+@table+' where
charindex('',''+cast('+@parentidfield+' as nvarchar)+'','','','+@tempcatstr1+','')>0'
exec sp_executesql @sql,N'@catstr nvarchar(max) output,@tempcatstr nvarchar(max) output',
@catstr output,@tempcatstr output
print @tempcatstr+ char(13)+char(10)
if(len(@tempcatstr)>0)
begin
set @tempcatstr1 = right(@tempcatstr,len(@tempcatstr)-1)
end
set @sql='select @catcount=count(*) from '+@table+' where
charindex('',''+cast('+@parentidfield+' as nvarchar)+'','','','+@tempcatstr1+','')>0'
exec sp_executesql @sql,N'@catcount int output',@catcount output
set @tempcatstr = ''
end
set @sql='select * from '+@table+' where charindex('',''+cast('+@idfield+
' as nvarchar)+'','','','+@catstr+','')>0 order by '+@parentidfield
exec sp_executesql @sql
- 无限级分类查询一个栏目下的所有子栏目
- php获取父级栏目下的所有子栏目
- SQL实现查询栏目对应的所有子栏目信息
- sql存储过程查询栏目下面的所有子栏目
- asp.net栏目的无限级分类
- 递归实现无限级栏目的分类
- DEDECMS获取无限栏目子分类的方法
- 简单的无限分类中递归子栏目
- php 递归无限级分类应用之打印子栏目,打印子孙栏目,打印家谱树
- PHPCMS调用'N'级栏目下的子栏目
- PHPCMS调用栏目下的子栏目
- 网站栏目无限分类的代码0918
- 查询所有子栏目的表值函数
- phpcms v9中调用某个栏目页面下的 子栏目里面的 所有文章列表
- 无限分类移动修改栏目
- PHP 获取栏目的【所有子级和孙级栏目】的ID号
- PHP获取栏目的所有子级与孙级栏目的ID号
- phpcms在导航随意调用一个栏目下的子栏目
- 怎么使程序与服务器上的oracle11g进行通信呢-安装oracle11g客户端
- 项目综合管理--项目章程和范围说明书
- HeadFirst 设计模式学习笔记2--观察者模式
- Oracle - Schema Objects
- 转PHP程序员的40点陋习 完全版
- 无限级分类查询一个栏目下的所有子栏目
- JSF框架服务 (图例 JSF框架概况图)
- mysql alter 语句用法,添加、修改、删除字段等
- SQL语句中DateAdd 函数说明
- IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG?
- 项目综合管理与项目范围管理
- WINCE 添加ActiveSync到目标设备
- php中iconv函数使用方法(转)
- 普洱茶实验