요소 이름 변수


9

이 tSQL 코드가 제대로 작동합니다.

SELECT 
c.logguid,
a.b.value('./PropertyValue', 'varchar(max)') asd
  FROM [dnn].[dbo].[EventLog2] c

cross apply sss.nodes('/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")]') as a(b)

그러나 내가 할 수있는 것은 각 값 사이에 OR 인 많은 값 쌍의 동적 목록을 전달하는 것입니다.

SELECT 
c.logguid,
a.b.value('./PropertyValue', 'varchar(max)') asd
  FROM [dnn].[dbo].[EventLog2] c

cross apply sss.nodes(
'/LogProperties/LogProperty[PropertyName=sql:variable("@x") and PropertyValue=sql:variable("@y")
or
PropertyName=sql:variable("@a") and PropertyValue=sql:variable("@b")
]'
) as a(b)

이 방법이 있습니까?


1
내가 이해하기 위해 @c와 @d 등이있을 수 있습니까?
wtjones

답변:


2

변수 목록 또는 배열이 필요한 매개 변수는 사용자 정의 테이블 유형에 적합한 후보 일 수 있습니다. 다음과 같이 유형을 작성합니다.

CREATE TYPE [PropertyVariableTableType] AS TABLE (
    PropertyName nvarchar(255),
    PropertyValue nvarchar(255) )

테이블 형식은 다른 형식과 마찬가지로 저장 프로 시저에 대한 매개 변수로 사용할 수 있습니다. 그런 다음 사용자 정의 테이블에서 조인하거나 행을 반복하여 쿼리를 동적으로 작성할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.