본문 바로가기

IT

MSSQL Query to XML -스칼라 함수를 이용하여, 간편하게 뽑아내기

자바 스프링 프로젝트에 마이바티스를 이용하여 XML형태로 데이터를 가져올때,
XML로 변환하는 쿼리가 정상적으로 인식안되는 경우도 많고, 쿼리를 정의하는 XML에 CDATA를 넣어주는것도 한계가 있다.

그때 아래와 같이 스칼라함수를 정의해두면 마이바티스 xml에서는 "select 스칼라함수명()" 으로 간단하게 xml데이터를 가져올수 있다.
이때 결과값 타입은 string으로 받는다.

CREATE FUNCTION [dbo].[XML_CONVERSION]
(

)
 RETURNS XML
AS
BEGIN
 DECLARE @rtn XML

select @rtn = (
   select 1 as 'TAG' 
    ,NULL as Parent
    ,lastrun as [item!1!lastrun!cdata]
    ,cpu_busy as [item!1!cpu_busy!cdata]
    ,io_busy as [item!1!io_busy!cdata]
    ,idle as [item!1!idle!cdata]
    ,pack_received as [item!1!pack_received!cdata]
    ,pack_sent as [item!1!pack_sent!cdata]
    ,connections as [item!1!connections!cdata]
    ,pack_errors as [item!1!pack_errors!cdata]
    ,connections as [item!1!connections!cdata]
    ,pack_errors as [item!1!pack_errors!cdata]
   from master.[dbo].[spt_monitor]
   FOR XML EXPLICIT
   )
 RETURN @rtn
END