SQL 树形菜单查询,查询本身和所有下级项

SQL 树形菜单查询,查询本身和所有下级项
 WITH Temp AS 
    (
		SELECT * FROM Sys_Organization WHERE OUGUID = @OUGUID AND OrgState = 1 AND IsAvailable = 1 AND IsDel = 0
        UNION ALL
        SELECT A.* FROM Sys_Organization A INNER JOIN Temp B 
		ON A.OUGUID = B.ParentOUGUID AND A.OrgState = 1 AND A.IsAvailable = 1 AND A.IsDel = 0
    ) 

	SELECT DISTINCT * FROM Temp ORDER BY OULevel

函数

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author:		HZ
-- Create date: 2011/10/17
-- Description:	传入字典类别,字典编码得到该级及以下类型的字典编码
-- =============================================
ALTER FUNCTION [dbo].[GetCodeValueDetail]
(
	@CodeFlag nvarchar(20),
	@CodeValue nvarchar(20)
)
RETURNS @table table(CodeValue nvarchar(20))
AS
begin
declare @IncludeItemCount int
	declare @ParentCode nvarchar(20)
	declare @Table_ParentID table(ParentCode nvarchar(20))
	declare @Table_IParentID table(IParentCode nvarchar(20))
	declare @Table_Mid table(ParentCode nvarchar(20))

	declare CursorCodeValue cursor for
	select distinct CodeValue from dbo.Sys_CodeValueDetail
	where  CodeValue= @CodeValue and CodeFlag=@CodeFlag
	open CursorCodeValue
	fetch next from CursorCodeValue into @ParentCode
	while @@fetch_status = 0
	begin
		insert into @Table_ParentID values (@ParentCode)
		insert into @Table_IParentID values (@ParentCode)

		select @IncludeItemCount = count(a.CodeValue) 
		from Sys_CodeValueDetail a,@Table_IParentID b 
		where a.ParentCode = b.IParentCode

		while (@IncludeItemCount > 0)
		begin
			insert into @Table_ParentID
			select distinct a.CodeValue
			from Sys_CodeValueDetail a , @Table_IParentID b 
			where a.ParentCode = b.IParentCode

			delete @Table_Mid
			insert into @Table_Mid
			select * from @Table_IParentID

			delete @Table_IParentID
			insert into @Table_IParentID
			select distinct a.CodeValue
			from Sys_CodeValueDetail a,@Table_Mid b 
			where a.ParentCode = b.ParentCode

			select @IncludeItemCount = count(a.CodeValue)
			from Sys_CodeValueDetail a,@Table_IParentID b 
			where a.ParentCode = b.IParentCode
		end
		delete @Table_IParentID
		delete @Table_Mid
		fetch next from CursorCodeValue into @ParentCode
	end
	close CursorCodeValue
	deallocate CursorCodeValue

	insert into @Table_Mid select distinct * from @Table_ParentID 

	insert into @table select * from @Table_Mid
	return
end






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值