저자: Adrian Rupp
트리 뷰 콘트롤(Tree View Control)과 같이 계층적으로 구성된 데이터를 필요로 하는 경우에 사용할 수 있는 스크립트다.
Varchar(4000) 타입의 문자열을 프로시저에 넘겨준 다음 이 루틴을 사용해서 파싱을 하면 된다. 확장된(Extended) 스토어드 프로시저인 xp_Tokenize 와는 DLL이 아닌 스크립트로 구성되었다는 점만 다를 뿐 기능은 동일하다.
--This is used for a situation where you may have a
--tree view control that you need to select data that
--belongs to the parent and all its children.
--Just pass a string (varchar(4000)) to the proc
--as a parameter. Then use this routine to parse it out.
--This will work like the xp_Tokenize Extended stored procedure
--without using an XP_...
--
DECLARE @project_ids varchar(4000),
@project_id int
SELECT @project_ids = '1,2,3,4,5,6,7,8,9'
SET NOCOUNT ON
--Set some variables (project ID)
IF RIGHT(@project_ids,1) <> ',' --make sure it has a trailing comma
SELECT @project_ids = @project_ids + ','
--Create Temp table to hold all the project ID's
CREATE TABLE #tPROJECT (project_id int NULL)
WHILE CHARINDEX( ',' , @project_ids) > 0
BEGIN
SELECT @project_id = convert(numeric,substring(@project_ids,1,CHARINDEX( ',' , @project_ids) - 1))
SELECT @project_ids = substring(@project_ids, datalength(rtrim(@project_ids)) -
((datalength(rtrim(@project_ids)) - datalength(rtrim(@project_id))) - 2), 4000)
INSERT INTO #tPROJECT SELECT @project_id
END
SET NOCOUNT OFF
--Use like this...
SELECT y.project_id,
y.field1,
y.field2,
y.field3,
y.field4
FROM YourTable y
WHERE y.project_id IN (SELECT project_id FROM #tPROJECT)
/*********************************************
Adrian Rupp
Developer
SPC Compuware Corp. for
KPMG at Wright-Patterson Air Force Base
Dayton Ohio
adrian@rupp.net [출처] 계층적인 구조로 데이터를 표시하는 스크립트 |작성자 진카자마
************************************************/