Tengo este código tSQL que funciona bien:
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)
Sin embargo, lo que quiero poder hacer es pasar una lista dinámica de muchos pares de valores que son OR entre cada uno, es decir
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)
¿Hay alguna forma de hacer esto?
Respuestas:
Cualquier parámetro que necesite una lista o matriz de variables es probablemente un buen candidato para un tipo de tabla definida por el usuario. Crearía el tipo como:
Los tipos de tabla se pueden usar como parámetros para procedimientos almacenados como cualquier otro tipo. Luego puede unirse en la tabla definida por el usuario o iterar las filas para generar dinámicamente la consulta.
fuente