xml 데이터 형식 메서드를 사용하기 위한 지침

다음 목록에는 xml 데이터 형식 메서드를 사용하기 위한 지침이 포함됩니다.

  • xml 데이터 형식 메서드는 다음 예에 표시된 것과 같이 PRINT 문에서 사용할 수 없습니다. xml 데이터 형식 메서드는 하위 쿼리로 취급되며 하위 쿼리는 PRINT 문에 허용되지 않습니다. 따라서 다음 예는 오류를 반환합니다.

    DECLARE @x xml
    SET @x = '<root>Hello</root>'
    PRINT @x.value('/root[1]', 'varchar(20)') -- will not work because this is treated as a subquery (select top 1 col from table) 
    

    이에 대한 해결 방법은 먼저 value() 메서드의 결과를 xml 형식의 변수에 할당한 다음 쿼리에서 변수를 지정하는 것입니다.

    DECLARE @x xml
    DECLARE @c varchar(max)
    SET @x = '<root>Hello</root>'
    SET @c = @x.value('/root[1]', 'varchar(11)')
    PRINT @c                                                      
    
  • xml 데이터 형식 메서드는 내부적으로 하위 쿼리로 취급됩니다. GROUP BY에는 스칼라가 필요하고 집계 및 하위 쿼리가 허용되지 않기 때문에 GROUP BY 절에 xml 데이터 형식 메서드를 지정할 수 없습니다. 이에 대한 해결 방법은 절 내에서 XML 메서드를 사용하는 사용자 정의 함수를 호출하는 것입니다.

  • 오류를 보고할 때 xml 데이터 형식 메서드는 다음 형식의 단일 오류를 발생시킵니다.

    Msg errorNumber, Level levelNumber, State stateNumber:
    XQuery [database.table.method]: description_of_error
    

    예를 들면 다음과 같습니다.

    Msg 2396, Level 16, State 1:
    XQuery [xmldb_test.xmlcol.query()]: Attribute may not appear outside of an element
    
  • exist() 메서드는 비어 있지 않은 결과를 반환하는 XQuery 식에 대해 1을 반환합니다. exist() 메서드 내에서 true() 또는 false() 함수를 지정하면 true()false() 함수가 각각 부울 값인 True와 False를 반환하기 때문에 exist() 메서드가 1을 반환합니다. 즉, 이들 함수는 비어 있지 않은 결과를 반환합니다. 따라서 **exist()**는 다음 예에서와 같이 1(True)을 반환합니다.

    declare @x xml
    set @x=''
    select @x.exist('true()') 
    

참고 항목

개념

예제 XML 응용 프로그램

관련 자료

xml 데이터 형식 메서드

도움말 및 정보

SQL Server 2005 지원 받기