[MSSQL]MSSQL 배열 저장 및 불러오기 스크립트 예제
/**********************************************************************************************
배열 저장 및 불러오기 스크립트 예제
작성자 : 이계은 차장(4Silver@paran.com)
작성일자 : 2011.03.11
주의 사항:
**********************************************************************************************/
USE tempdb –> 권한 있는 DB로 설정
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE NAME = ‘ARRAY_TEST’)
DROP TABLE ARRAY_TEST
GO
CREATE TABLE ARRAY_TEST
(
ARRAY_INF XML
)
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE NAME = ‘USP_ARRAY_TEST_INSERT’)
DROP PROC USP_ARRAY_TEST_INSERT
GO
CREATE PROC USP_ARRAY_TEST_INSERT
AS
BEGIN
DECLARE @ARRAY_TBL TABLE
(
COL1 VARCHAR(100)
,COL2 VARCHAR(100)
,COL3 VARCHAR(100)
,COL4 VARCHAR(100)
,COL5 VARCHAR(100)
,COL6 VARCHAR(100)
,COL7 VARCHAR(100)
,COL8 VARCHAR(100)
)
–데이터 삭제
DELETE ARRAY_TEST
–샘플 데이터 입력 (5 X 8)
INSERT @ARRAY_TBL(COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8)
VALUES(1,2,3,4,5,6,7,8)
INSERT @ARRAY_TBL(COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8)
VALUES(2,4,6,8,10,12,14,16)
INSERT @ARRAY_TBL(COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8)
VALUES(3,6,9,12,15,18,21,24)
INSERT @ARRAY_TBL(COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8)
VALUES(4,8,12,16,20,24,28,32)
INSERT @ARRAY_TBL(COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8)
VALUES(5,10,15,20,25,30,35,40)
–테이블-> XML 변환
DECLARE @RETXML XML
SET @RETXML=
(SELECT *
FROM @ARRAY_TBL AS ARRAY_TBL
FOR XML AUTO,ROOT(‘root’))
–XML 데이터 입력
INSERT ARRAY_TEST VALUES (@RETXML)
END
GO
–XML 생성 프로시져 실행
EXEC USP_ARRAY_TEST_INSERT
GO
SELECT * FROM ARRAY_TEST
GO
–데이터 가져오기 XML-> 테이블
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE NAME = ‘USP_ARRAY_TEST_SELECT’)
DROP PROC USP_ARRAY_TEST_SELECT
GO
CREATE PROC USP_ARRAY_TEST_SELECT
AS
BEGIN
DECLARE @idoc int
DECLARE @doc xml
SELECT @doc= ARRAY_INF
FROM ARRAY_TEST
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, ‘/root/ARRAY_TBL’,1)
WITH (COL1 VARCHAR(100)
,COL2 VARCHAR(100)
,COL3 VARCHAR(100)
,COL4 VARCHAR(100)
,COL5 VARCHAR(100)
,COL6 VARCHAR(100)
,COL7 VARCHAR(100)
,COL8 VARCHAR(100))
END