/**********************************************************************************************
-- Title : [2k5] XML schema를 데이터베이스로 수집(collection)
-- Reference : hanbitbook.co.kr
-- Key word : xml schema collection sys.xml_schema_collections namespace
**********************************************************************************************/
USE sqlDB;
GO
--아래 결과에서
--<xsd:schema...>부터</xsd:schema>까지 추출
SELECT TOP (2) * FROM userTbl FOR XML RAW, ELEMENTS, XMLSCHEMA;
GO
DROP XML SCHEMA COLLECTION schema_userTbl;
GO
--위에서 추출한 결과를 아래 쿼리에 연결
CREATE XML SCHEMA COLLECTION schema_userTbl AS '여기에 복사';
GO
--XML 스키마 정보 확인
SELECT *
FROM sys.xml_schema_collections;
GO
--XML 스키마 사용한 테이블
DROP TABLE tXmlTbl;
GO
CREATE TABLE tXmlTbl (id INT IDENTITY, xmlCol XML (schema_userTbl) );
GO
INSERT INTO tXmlTbl VALUES(N'일반 텍스트 입력');
--XML 유효성 검사: 이 위치에서는 텍스트 노드를 사용할 수 없습니다.
--유형이 요소 전용 콘텐츠 또는 단순 콘텐츠로 정의되었습니다. 위치: /
GO
INSERT INTO tXmlTbl VALUES
(N'<row xmlns="urn:schemas-microsoft-com:sql:SqlRowSet5">
<userID>AJH </userID>
<name>안정환</name>
<birthYear>1979</birthYear>
<addr>강원 </addr>
<height>182</height>
</row>');
INSERT INTO tXmlTbl VALUES
(N'<row xmlns="urn:schemas-microsoft-com:sql:SqlRowSet5">
<userID>CJC </userID>
<name>최진철</name>
<birthYear>1975</birthYear>
<addr>제주 </addr>
<mobile1>019</mobile1>
<mobile2>0000000 </mobile2>
<height>185</height>
</row>');
GO
DECLARE @tx XML(schema_userTbl)
SET @tx = N'
<row xmlns="urn:schemas-microsoft-com:sql:SqlRowSet5">
<userID>JJJ </userID>
<name>조재진</name>
<birthYear>1986</birthYear>
<addr>충북 </addr>
<mobile1>019</mobile1>
<mobile2>3333333 </mobile2>
<height>179</height>
</row>'
INSERT INTO tXmlTbl VALUES(@tx);
GO
SELECT * FROM sys.xml_schema_collections;
GO
SELECT XML_SCHEMA_NAMESPACE(N'dbo', N'schema_userTbl');
GO
SELECT * FROM tXmlTbl;
DROP TABLE tXmlTbl;
DROP XML SCHEMA COLLECTION schema_userTbl;
GO
[2k5] XML schema를 데이터베이스로 수집(collection)
2008. 9. 7. 02:06
반응형
반응형