2012-06-08 28 views
8

Ho una query sql che sta tornando indietro con un errore sul nome della mia colonna dicendo "impossibile chiamare i metodi su nvarchar (max).XML dalla colonna SQL: impossibile chiamare i metodi su nvarchar (max)

 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] 

La questione sembra centrare intorno [XML_EX] .value ma ho provato un paio di cose tra cui la modifica del tipo di colonna, ma ho finalmente scollarsi. Qualsiasi suggerimento sarebbe molto apprezzato.

risposta

2

Grazie per le vostre risposte ragazzi. Si scopre che ho finito per complicarlo perché non ho accesso al mio spazio dei nomi nella tabella SQL. Tuttavia, ho iniziato cambiando il mio tipo di campo in XML, quindi grazie Andomar. La mia soluzione è qui sotto:

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

Questo estrae i miei tempi totali come avevo sperato. Grazie ancora.

6

Suoni come XML_EX sono di tipo nvarchar(max). Prova a cambiarlo in xml.

Potete anche gettarlo nella query, in questo modo:

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

'CAST' deve racchiudere l'intero riferimento di colonna, non solo il nome della colonna (ad esempio' lcxt' deve essere all'interno) –

+0

@Damien_The_Unbeliever: Ovviamente, sentiti libero di modificare;) – Andomar

Problemi correlati