예제 이므로 밑에 데이터를 선언해서 사용했지만. 원래는 CS 단에서 노란부분 처럼 XML로 만들어서 던졌어요.
EXEC USP_SWS_SAVE_INSERT
'<LIST><ROW><SEQ>1</SEQ><MUID>AAA</MUID></ROW><ROW><SEQ>2</SEQ><MUID>BBB</MUID></ROW></LIST>',
null, null
ALTER PROCEDURE USP_SAVE_INSERT
@P_XMLDATA VARCHAR(MAX), -- DETAIL XML DATA
@P_RTN_CODE VARCHAR(4) OUTPUT,
@P_RTN_MSG VARCHAR(2000) OUTPUT
예제
DECLARE @XML_DATA VARCHAR(MAX) -- XML DATA
DECLARE @XML_RTN INT -- XML 핸들 번호 RETURN
SET @XML_DATA = '<LIST><ROW><SEQ>1</SEQ><ID>AAA</ID></ROW><ROW><SEQ>2</SEQ><ID>BBB</ID></ROW></LIST>'
-- XML을 담을 임시 테이블을 선언해줍미다.
CREATE TABLE #TEMP_XML
(
SEQ INT,
ID VARCHAR(20)
)
-- XML 문서의 새로 생성된 내부 표현에 액세스하는 데 사용할 수 있는 핸들을 받습니다.
EXEC sp_xml_preparedocument @XML_RTN OUTPUT, @XML_DATA
INSERT INTO #TEMP_XML
SELECT *
FROM OPENXML (@XML_RTN, '/LIST/ROW', 3)
WITH
(
SEQ INT,
ID VARCHAR(20)
)
-- 아까 생성된 XML 핸들을 제거합니다.
EXEC sp_xml_removedocument @XML_RTN
SELECT * FROM #TEMP_XML
이제 임시 테이블에 넣은 데이터를 기준으로 아래에 기능을 더 추가하면 되겠지요?
아래는 위의 예제를 직접 실행해본겁미다~.
오후.. 5시쯤...혼자 열라 해메던 문제......
XML 데이타 필드 안에 한글이 들어있을 경우 위와 같이 했다간 에러가 발생하더군요.
XML 을 받는 변수의 속성을 VARCHAR(MAX)가 아닌 NVARCHAR(MAX)로 하여야 됩니다.
아무래도 NVARCHAR는 유니코드/다국어지원이 되기 때문인거 같은데.. 걍 VARCHAR에도 한글은 들어가 지는뎁...
[출처] [MSSQL] XML로 데이터를 만들어서 SP에서 처리하는 방법|작성자 여우비
'연구개발 > SQL2008' 카테고리의 다른 글
권한확인 (0) | 2014.04.11 |
---|---|
xp_cmdshell enable and disable (0) | 2010.05.25 |
같은 그룹의 데이터를 붙여서 출력하기 (0) | 2010.05.25 |
SQL Server를 실행하는 서버 사이에서 데이터베이스를 이동할 때 사용 권한 문제를 해결하는 방법 (0) | 2010.05.23 |
IP 주소 범위 체크 (0) | 2010.05.20 |