तत्व नाम के लिए चर


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'd हैं, अर्थात

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) )

तालिका प्रकारों को किसी भी अन्य प्रकार के रूप में संग्रहीत प्रक्रियाओं के मापदंडों के रूप में उपयोग किया जा सकता है। फिर आप उपयोगकर्ता-परिभाषित तालिका में शामिल हो सकते हैं या क्वेरी को गतिशील रूप से बनाने के लिए पंक्तियों को पुन: व्यवस्थित कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.