반응형
SELECT FOR XML 쿼리에서 반환된 열 이름을 선택하는 방법은 무엇입니까?
MS SQL에는 여러 행의 열 값을 하나의 값으로 연결하는 편리한 해결 방법이 있습니다.
SELECT col1
FROM table1
WHERE col2 = 'x'
ORDER by col3
FOR XML path('')
그러면 멋진 레코드 세트가 반환됩니다.
XML_F52E2B61-18A1-11d1-B105-00805F49916B
----------------------------------------
<col1>Foo</col1><col1>Bar</col1>
반환된 레코드 세트의 열 이름만 다소 불쾌합니다!
열 이름에 임의 요소(또는 GUID)가 포함되어 있는 것 같습니다. 따라서 응용 프로그램에서 사용하기가 꺼려집니다(다른 인스턴스 또는 다른 서버에 다른 GUID가 있을 수 있음).유감스럽게도 *를 사용하여 값을 선택할 수 없으며, 기존 응용 프로그램의 제한으로 인해 반환된 열을 반복할 수 없습니다.
반환된 레코드 세트의 열 이름을 좀 더 합리적인 이름으로 강제할 수 있는 방법이 있습니까?
그러면 됩니다.
select(
SELECT col1
FROM table1
WHERE col2 = 'x'
ORDER by col3
FOR XML path('')
) as myName
예쁘지는 않지만 필요한 결과를 주어야 합니다.
해보세요...
select
(
select '@greeting' = 'hello', '@where' = 'there', '@who' = 'world'
for xml path ('salutation'), type
) as 'MyName'
참고: "for xml" 뒤에 "type"을 생략하면 (내 생각에는) 문자열이 나옵니다.
저장 프로시저
declare @requestResultXML xml
set @requestResultXML =
(
SELECT 'NPOIT-1.0' AS '@Interface',
(
select 'Query' as '@Type',
'GetBill' as '@Query',
'True' as '@CompressResult'
FOR XML PATH('Head'), TYPE
),
(
select @pin as '@PIN',
@period as '@Period',
@number as '@Number',
@barcode as '@Barcode'
FOR XML PATH('QueryParams'), TYPE
) as Data
FOR XML PATH('DataExchangeModule')
)
select @requestResultXML as GetBillRequest
EXPLICATE xml 생성 - 유니언을 사용하는 경우 결과를 한 번 더 래핑해야 합니다(XML로서의 보너스 결과).
SELECT
CAST(
(
SELECT
*
FROM (
SELECT
1 AS Tag
,NULL AS Parent
...
UNION ALL
SELECT ...
FOR XML EXPLICIT
)
) as XML) as [MyName]
DECLARE @XmlData XML;
SET @XmlData =(SELECT * FROM [dbo].[Users] ORDER by UserName FOR XML path(''))
SELECT @XmlData AS Result
DECLARE @XmlData XML;
SET @XmlData = (
SELECT *
FROM [dbo].[TABLE1]
FOR XML PATH('ChildNodeDetailsResponse')
,ROOT('ParentNode')
)
SELECT @XmlData AS Result
언급URL : https://stackoverflow.com/questions/304940/how-to-choose-returned-column-name-in-a-select-for-xml-query
반응형
'programing' 카테고리의 다른 글
공백 충돌 없이 병합 (0) | 2023.06.25 |
---|---|
네임스페이스 선언과 모듈 선언의 차이점은 무엇입니까? (0) | 2023.06.25 |
Firebase가 현재 사용자를 제거합니다. (0) | 2023.06.20 |
ID로 그룹화된 후 열 값을 기준으로 행을 카운트하는 방법 (0) | 2023.06.20 |
IE에서 "시스템 호출로 전달된 데이터 영역이 너무 작습니다"라는 오류가 발생하는 이유는 무엇입니까? (0) | 2023.06.20 |