मेरे पास टेक्स्ट के रूप में संग्रहीत एक टाइप किया गया XML दस्तावेज़ है। इसलिए मैं एक्सएमएल तरीकों का उपयोग करने में सक्षम होने के लिए एक आम तालिका अभिव्यक्ति का उपयोग करके एक्सएमएल के लिए डेटा प्रकार परिवर्तित का उपयोग करें:एक्सएमएल क्वेरी() काम करता है, वैल्यू() को सिंगलटन की आवश्यकता होती है xdt: untypedAtomic
WITH xoutput AS (
SELECT CONVERT(xml, t.requestpayload) 'requestpayload'
FROM TABLE t
WHERE t.methodid = 1)
SELECT x.requestpayload.query('declare namespace s="http://blah.ca/api";/s:validate-student-request/s:student-id') as studentid
FROM xoutput x
क्वेरी, काम करता है मेरे लिए तत्व लौटने। लेकिन मैं केवल मूल्य में दिलचस्पी रखता हूँ:
WITH xoutput AS (
SELECT CONVERT(xml, t.requestpayload) 'requestpayload'
FROM TABLE t
WHERE t.methodid = 1)
SELECT x.requestpayload.value('declare namespace s="http://blah.ca/api";/s:validate-student-request/s:student-id', 'int') as studentid
FROM xoutput x
यह मैं निम्न त्रुटि देता है:
'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'
क्या मैं googled है कि XPATH/XQuery कोष्ठक के अंदर होने की जरूरत है कहते हैं और/या जरूरत है "[1]" - न तो काम किया है। एक्सएमएल में केवल एक छात्र-आईडी तत्व है, हालांकि मुझे लगता है कि स्कीमा अधिक के लिए अनुमति देता है?
इसके अतिरिक्त, कई तत्व मान हैं जिन्हें मैं पुनर्प्राप्त करना चाहता हूं - क्या प्रति विधि कॉल के बजाय नामस्थान घोषित करने का कोई तरीका है?
जैसा कि मैं इसे समझता हूं '[1]' केवल पहला परिणाम देता है जबकि '.value ('।' 'सभी परिणाम देता है। –