存儲過程里的遞歸 實現(xiàn)方法
更新時間:2006年12月28日 00:00:00 作者:
一個二叉樹的遞歸,找出左邊最下面的一個點
id 自動編號
pid 父ID
id_path 節(jié)點路徑
flg 位置,0左邊,1右邊
ALTER PROCEDURE [dbo].[get_class]
其實只需一個查詢語句就能找出最下面的ID
節(jié)點路徑包函1,并且父節(jié)點位置都是左邊,取出最大一個
select top 1 * from class a where id_path like '%1,%' and flg=0 and (select flg from class where id=a.pid)=0 order by id desc
id 自動編號
pid 父ID
id_path 節(jié)點路徑
flg 位置,0左邊,1右邊
ALTER PROCEDURE [dbo].[get_class]
復(fù)制代碼 代碼如下:
@class int,
@return int output
AS
SELECT @return=isnull(( select top 1 id from class where pid=@class and flg=0 ),-2)
if @return>-1
begin
exec get_class @return,@return output--這里為什么要用@return,你要最后得到這個值,必須把它傳進(jìn)去
end
else
begin
SELECT @return=@class
end
GO
@return int output
AS
SELECT @return=isnull(( select top 1 id from class where pid=@class and flg=0 ),-2)
if @return>-1
begin
exec get_class @return,@return output--這里為什么要用@return,你要最后得到這個值,必須把它傳進(jìn)去
end
else
begin
SELECT @return=@class
end
GO
其實只需一個查詢語句就能找出最下面的ID
節(jié)點路徑包函1,并且父節(jié)點位置都是左邊,取出最大一個
select top 1 * from class a where id_path like '%1,%' and flg=0 and (select flg from class where id=a.pid)=0 order by id desc