Как определить типы данных результатов SQL?

Следующие изменения решили проблему (не знаю основную причину)

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>";
10
задан marc_s 11 April 2012 в 12:46
поделиться

5 ответов

Можно выполнить запрос с НАБОРОМ FMTONLY НА, но это не могло бы помочь Вам легко определить возвращенные типы данных, так как Вы работаете в студии управления только. Если бы это был я, я думаю, что создал бы представление временно с тем же телом как хранимая процедура (Вам, вероятно, придется объявить переменные для любых параметров). Можно затем посмотреть на столбцы, возвращенные представлением с запросами INFORMATION_SCHEMA, уже обсужденными.

6
ответ дан 3 December 2019 в 17:22
поделиться

При использовании SQL Server метаданные от различных таблиц доступны в information_schema таблица. Например, для получения метаданных столбца для таблицы Foo выпустите этот запрос:

SELECT * FROM information_schema.columns WHERE table_name = 'Foo'
2
ответ дан 3 December 2019 в 17:22
поделиться

При использовании C#, Вы могли бы получить доступ к нему прямо от поля в объекте DataRow:

Type columnNameType = row["columnName"].GetType();
2
ответ дан 3 December 2019 в 17:22
поделиться

И для дополнительной альтернативы можно использовать

sp_help  'Table_Name'

Править: Кроме того, sp_help может использоваться для любого объекта (т.е. он указал бы на тип возврата входных и выходных переменных хранимой процедуры),

2
ответ дан 3 December 2019 в 17:22
поделиться

Обратите внимание, что метаданные набора результатов отличаются от метаданных таблицы, потому что SQL-запросы могут включать выражения, типы данных которых не могут совпасть с теми, которые в таблицах, которые они запрашивают.

Много интерфейсов SQL-запроса дают Вам некоторую функцию для получения информации о метаданных набора результатов (типы данных, и т.д.).

Определенные API-функции, которые необходимо использовать, зависят от того, какой язык и интерфейс запросов Вы используете. Вы не заявили это.

Например, если Вы используете ODBC, SQLDescribeCol() функция может дать Вам информацию о метаданных набора результатов.

0
ответ дан 3 December 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: