Ví dụ về dữ liệu:Sql Stored Procedure trong khi vòng lặp
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
Bây giờ Nếu tôi tìm kiếm danh như '% trẻ em 1%', tôi muốn các hồ sơ sau: Row-1, Row-3, Row -4 và hàng-5 trong dữ liệu trên. Tôi có thể viết loại nào nếu thủ tục lưu sẵn có thể trả lại cho tôi hàng không rõ ràng?
Ý tưởng của tôi là Nếu tôi tìm kiếm văn bản, nó sẽ tiếp tục chọn các bản ghi từ bảng cho đến khi parentID rỗng. Vì vậy, nếu tôi thực hiện tìm kiếm giống như 'child-1', truy vấn sql cơ bản sẽ trả về Row-4 và Row-5. Nhưng thủ tục của tôi shud kiểm tra trong một vòng lặp mà Row-4 có parentid mà không phải là null, do đó, nó được một hàng với ID = parentid của hàng-4 đó là 3. Bây giờ nó được một hàng với ID = parentid của hàng-3 mà là 1 và nhận hàng-1. Bây giờ parentd của hàng-1 là NULL nên nó dừng lại.
Tôi đang sử dụng quy trình được lưu trữ này để triển khai chức năng tìm kiếm trong chế độ xem dạng cây mà tôi muốn giữ thứ bậc cha-con sau khi tìm kiếm.
cho đến nay tôi đã cố gắng này, nhưng tôi mới để làm thủ tục lưu trữ:
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
Cảm ơn Michael Harmon..Thanks cho mã. Nó hoạt động hoàn hảo. Cảm ơn một lần nữa vì sự giúp đỡ. – user2272865