2010-04-20 4 views
1

뷰를 쿼리하고 내 SP에 대한 매개 변수로 제공되는 XML에 정의 된 열만 포함해야합니다. XML을 select 절에 포함시키고 XML에 정의 된 모든 열을 추출 할 수 있습니까? 이 방법을 알려주십시오.XML에서 SQL Server의 동적 선택 절

XML 형식으로 내가 선택 목록에서 이러한 열을 데려 가고 싶다는

<Columns> 
    <Column Name="CustomerID"/> 
    <Column Name="CustomerName"/> 
    <Column Name="Customerstate"/> 
</Columns> 

입니다.

SELECT row.value('@Name', 'varchar(200)') 
FROM @varXML.nodes('Columns/Column') AS d (row) FROM JobListingDetails 
+1

수를 몇 가지 코드와 XML 샘플을 보여줍니다. 귀하의 질문은 대답하기에 너무 모호합니다 ..... –

답변

0

는 자체에 대한 행을 필터링하는 클라이언트 응용 프로그램이 작업을 수행하기보다는 허용 줄 이유는 잘 모르겠지만, 당신이 그것을 수행해야하는 경우, 당신은 동적 SQL이 필요합니다

DECLARE @varXML XML 
DECLARE @columnList NVARCHAR(MAX) 

SET @varXML = 
' <Columns> 
    <Column Name="CustomerID"/> 
    <Column Name="CustomerName"/> 
    <Column Name="Customerstate"/> 
</Columns> 
' 

SET @columnList = 
(SELECT row.value('@Name', 'varchar(200)') + ',' 
    FROM @varXML.nodes('Columns/Column') AS d (row) 
    FOR XML PATH('') 
) 

--SELECT @columnList 

SET @columnList = 'SELECT ' + LEFT(@columnList, LEN(@columnList) - 1) + ' FROM JobListingDetails' 

EXEC sp_executesql @columnList