La consulta XML () funciona, el valor () requiere singleton encontrado xdt: untypedAtomic

Tengo un documento XML escrito como texto. Así que utilizo CONVERTIR el tipo de datos a xml usando una expresión de tabla común para poder usar métodos XML:

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

La consulta funciona, devolviéndome el elemento. Pero solo me interesa el valor:

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

Esto me da el siguiente error:

'value ()' requiere un singleton (o secuencia vacía), un operando encontrado de tipo 'xdt: untypedAtomic *'

Lo que he buscado en Google dice que el XPATH / XQUERY debe estar entre paréntesis y / o necesita "[1]", ninguno de los dos ha funcionado. Sólo hay un elemento de identificación de estudiante en el xml, aunque supongo que el esquema permite más.

Además, hay numerosos valores de elementos que me gustaría recuperar. ¿Existe una manera de declarar el espacio de nombres una vez en lugar de por llamada de método?

Respuestas a la pregunta(3)

Su respuesta a la pregunta