存儲(chǔ)過程里的遞歸 實(shí)現(xiàn)方法
更新時(shí)間:2006年12月28日 00:00:00 作者:
一個(gè)二叉樹的遞歸,找出左邊最下面的一個(gè)點(diǎn)
id 自動(dòng)編號(hào)
pid 父ID
id_path 節(jié)點(diǎn)路徑
flg 位置,0左邊,1右邊
ALTER PROCEDURE [dbo].[get_class]
其實(shí)只需一個(gè)查詢語(yǔ)句就能找出最下面的ID
節(jié)點(diǎn)路徑包函1,并且父節(jié)點(diǎn)位置都是左邊,取出最大一個(gè)
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 自動(dòng)編號(hào)
pid 父ID
id_path 節(jié)點(diǎn)路徑
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,你要最后得到這個(gè)值,必須把它傳進(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,你要最后得到這個(gè)值,必須把它傳進(jìn)去
end
else
begin
SELECT @return=@class
end
GO
其實(shí)只需一個(gè)查詢語(yǔ)句就能找出最下面的ID
節(jié)點(diǎn)路徑包函1,并且父節(jié)點(diǎn)位置都是左邊,取出最大一個(gè)
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
相關(guān)文章
關(guān)于使用存儲(chǔ)過程創(chuàng)建分頁(yè)
關(guān)于使用存儲(chǔ)過程創(chuàng)建分頁(yè)...2006-08-08以前寫的一個(gè)分頁(yè)存儲(chǔ)過程,剛才不小心翻出來(lái)的
以前寫的一個(gè)分頁(yè)存儲(chǔ)過程,剛才不小心翻出來(lái)的...2006-06-06ASP調(diào)用SQL SERVER存儲(chǔ)程序
ASP調(diào)用SQL SERVER存儲(chǔ)程序...2007-03-03ASP調(diào)用帶參數(shù)存儲(chǔ)過程的幾種方式
ASP調(diào)用帶參數(shù)存儲(chǔ)過程的幾種方式...2007-03-03