Следующие изменения решили проблему (не знаю основную причину)
1. ЛОЖЬ, чтобы установить осведомленность о пространстве имен
dbFactory.setNamespaceAware(false);
2. Удаление идентификатора пространства имен из строки xslt
String sorter="<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\">"+
" <xsl:output method=\"xml\" encoding=\"utf-8\" indent=\"yes\"/>"+
" <xsl:template match=\"@* | node()\">"+
" <xsl:copy>"+
" <xsl:apply-templates select=\"@* | node()\"/>"+
" </xsl:copy>"+
" </xsl:template>"+
" <xsl:template match=\"Row\">"+ //if namespace sensitive then use ss:Row
" <xsl:copy>"+
" <xsl:apply-templates select=\"*\">"+
" <xsl:sort select=\"@Index\" order=\"ascending\" data-type=\"number\"/>"+ //if namespace sensitive then use ss:Index
" </xsl:apply-templates>"+
" </xsl:copy>"+
" </xsl:template>"+
"</xsl:stylesheet>";
Можно выполнить запрос с НАБОРОМ FMTONLY НА, но это не могло бы помочь Вам легко определить возвращенные типы данных, так как Вы работаете в студии управления только. Если бы это был я, я думаю, что создал бы представление временно с тем же телом как хранимая процедура (Вам, вероятно, придется объявить переменные для любых параметров). Можно затем посмотреть на столбцы, возвращенные представлением с запросами INFORMATION_SCHEMA, уже обсужденными.
При использовании SQL Server метаданные от различных таблиц доступны в information_schema
таблица. Например, для получения метаданных столбца для таблицы Foo выпустите этот запрос:
SELECT * FROM information_schema.columns WHERE table_name = 'Foo'
При использовании C#, Вы могли бы получить доступ к нему прямо от поля в объекте DataRow:
Type columnNameType = row["columnName"].GetType();
И для дополнительной альтернативы можно использовать
sp_help 'Table_Name'
Править: Кроме того, sp_help может использоваться для любого объекта (т.е. он указал бы на тип возврата входных и выходных переменных хранимой процедуры),
Обратите внимание, что метаданные набора результатов отличаются от метаданных таблицы, потому что SQL-запросы могут включать выражения, типы данных которых не могут совпасть с теми, которые в таблицах, которые они запрашивают.
Много интерфейсов SQL-запроса дают Вам некоторую функцию для получения информации о метаданных набора результатов (типы данных, и т.д.).
Определенные API-функции, которые необходимо использовать, зависят от того, какой язык и интерфейс запросов Вы используете. Вы не заявили это.
Например, если Вы используете ODBC, SQLDescribeCol()
функция может дать Вам информацию о метаданных набора результатов.