El error que te sale lo puedes corregir asi:
Código SQL:
Ver originalWHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL= '
SELECT m.mes, m.p_orig, m.dest, m.n_int, m.item, [' + @nom_men + ']
FROM mensajes m '
EXEC sp_executesql(@SQL)
FETCH NEXT FROM nom_men_cursor INTO @nom_men
END
Pero no estoy seguro que sea lo que buscas, ademas que recomendamos no usar cursores.
Si usas SQL 2005 puedes usar la funcion PIVOT.