例子:SQL存儲過程,而循環
ID Name ParentID
1 parent-1 NULL
2 parent-2 NULL
3 sub 1
4 child-1-1 3
5 child-1-2 1
6 child-2-1 2
現在,如果我要尋找的名稱,如 '%兒童1%',我想下面的記錄:行1,行-3,行-4和第5行以上數據。什麼樣的存儲過程,我可以寫,返回我disctinct行?
我的想法是如果我搜索文本,它將繼續從表中選擇記錄,直到parentID爲空。所以如果我像搜索'child-1'一樣,基本的SQL查詢返回第4行和第5行。但是我的程序在檢查一個循環中檢查了Row-4的parentid,它不是null,所以它得到了一行ID = 4的row-4,它是3.現在它得到一行ID = parentid的第3行是1並獲得第1行。現在行1的父項爲NULL,因此它停止。
我正在使用此存儲過程在樹視圖中實現搜索功能,我希望在搜索後保留父子層次結構。
到目前爲止,我已經試過,但我是新來的存儲過程:
USE DBname
Go
DECLARE @ParentID int
Declare @myresultset Cursor
Set @myresultset = CURSOR for Select ParentID from mytable where Name like 'child-1%'
OPEN @myresultset
Fetch NEXT from @myresultset
into @ParentID
While @@Fetch_Status=0
Begin
While @ParentID is not NULL
Begin
Select @ParentID = ParentID from mytable where [email protected]
Select distinct * from mytable where [email protected]
End
Fetch Next from @myresultset
into @ParentID
End
close @myresultset
感謝邁克爾Harmon..Thanks的代碼。它工作完美。再次感謝您的幫助。 – user2272865 2013-04-22 03:41:14