2012-06-08 12 views
8

पर विधियों को कॉल नहीं कर सकता है मेरे पास एक एसक्यूएल क्वेरी है जो मेरे कॉलम नाम पर एक त्रुटि के साथ वापस लात मार रही है और कह रही है कि 'nvarchar (max) पर विधियों को कॉल नहीं कर सकता।एसक्यूएल कॉलम से एक्सएमएल: nvarchar (अधिकतम)

 SELECT [LEARNER_COURSE_XML_TEST].[XML_EX].Query('declare namespace 
     x="http://tempuri.org/cmi.xsd";] (/x:cmi/x:core/x:time_taken)') 
     AS TimeTaken FROM [LEARNER_COURSE_XML_TEST] 

मुद्दा [XML_EX] .Value के आसपास केंद्रित करने के लिए लगता है, लेकिन मैं स्तंभ प्रकार बदलने सहित कुछ चीजें की कोशिश की है, लेकिन मैं अंत में unstuck आ गए हैं। किसी भी प्वाइंटर की अत्यधिक सराहना की जाएगी।

उत्तर

2

धन्यवाद:

आप भी इसे क्वेरी में, कच्चा कर सकते हैं ताकि तरह। बाहर निकलता है मैं इसे जटिल बना रहा था क्योंकि मेरे पास SQL ​​तालिका में मेरे नेमस्पेस तक पहुंच नहीं है। हालांकि मैंने अपने क्षेत्र के प्रकार को एक्सएमएल में बदलकर शुरू किया ताकि धन्यवाद एंडोमर। मेरा समाधान नीचे है:

SELECT [LEARNER_COURSE_XML_TEST].[XML_EX].query('data(sco/cmicore/total_time)') AS TimeTaken FROM [LEARNER_COURSE_XML_TEST] 

यह मेरी कुल बार निकालता है जैसा कि मैंने आशा की थी। एक बार फिर धन्यवाद।

6

XML_EX जैसे लगता है nvarchar(max) टाइप करें। इसे xml पर बदलने का प्रयास करें। आपकी प्रतिक्रियाओं लोगों के लिए

select cast(lcxt.XML_EX as xml).query(...) 
from learner_course_xml_test lcxt 
+0

'CAST' को पूरे कॉलम संदर्भ को लपेटना है, न केवल कॉलम नाम (यानी 'lcxt.' अंदर होना चाहिए) –

+0

@Damien_The_Unbeliever: जाहिर है, संपादित करने के लिए स्वतंत्र महसूस करें;) – Andomar

संबंधित मुद्दे