반응형

/**********************************************************************************************
-- 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

반응형

+ Recent posts