根據傳入引數查詢指定項的子項的遞迴用法
樣表:child,parent
1 0
2 0
3 1
4 2
要 實現這種用法一般都通過兩種方式來實現:
procedure 方式:
create procedure usp_getallchild(@child int)
asdeclare @t table(child int null,parent int null,level int null)
declare @level int
set @level=0
insert into @t(t.child,t.parent,level) select [table].child,[table].parent,@level from [table] where [table].child=@child
while @@rowcount>0
begin
set @level=@level+1
insert into @t(t.child,t.parent,level) select [table].child,[table].parent,@level from [table] join @t as t on t.child=[table].parent where t.level=@level-1
endselect * from @t
function 方式
create function udf_getallchild(@child int)
returns @t_return table(child int null,parent int null,level int null)
asbegin
declare @level int
set @level=0
insert into @t_return(child,parent,level) select child,parent,@level from table where child=@child
while @@rowcount>0
begin
set @level=@level+1
insert into @t(child,parent,level) select child,parent,@level from table jion @t_return as t on t.child=table.parent where t.level=@level-1
endreturn @t_return
end
sql server table型別的變數使用注意事項
在sql sever 中,table型別的變數的使用可以給我們帶來很多方便之處,但是方便的東西往往是存在一些不足的 ,
table 型別的變數在作為 表使用時,在進行關聯操作時,必須給表變數起乙個別名,不然sql server 會豪不客氣的告訴你,你沒有申明該錶變數。其它使用可以很實體表一樣使用。
用SQL語句實現遞迴演算法
本文通過乙個bom表的例子,分別介紹在sql server2000和sql server2005中如何編寫遞迴演算法。一 建立測試資料 createtablebillofmaterial productno nvarchar 15 父元件編號 productname nvarchar 50 子元件名...
遞迴演算法實現
遞迴演算法 1 乙個人趕著鴨子去每個村莊賣,每經過乙個村子賣去所趕鴨子的一半又乙隻。這樣他經過了七個村子後還剩兩隻鴨子,問他出發時共趕多少只鴨子?經過每個村子賣出多少只鴨子?題目分析 遞迴終止的條件是到第7個村莊時遞迴停止 演算法構造 定義遞迴函式f n 當 n 8時 剩餘2只鴨子,當 0時 總共趕...
python遞迴實現 遞迴演算法 python實現
在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...