Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
Подскажите статью, где описывается как создать xml данные в языке sql в оракловом диалекте.
30 ноя 18, 12:56    [21749834]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
-2-
Member

Откуда:
Сообщений: 14079
Piastry,

XML DB Developers Guide
30 ноя 18, 13:02    [21749846]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
А что то типо этого: https://info-comp.ru/obucheniest/642-for-xml-in-t-sql.html

Транзакт в этом плане сильно отличается от оракла?
30 ноя 18, 13:19    [21749884]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
-2-
Member

Откуда:
Сообщений: 14079
Piastry
что то типо
Критерии "типо"сти?
30 ноя 18, 13:45    [21749938]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
-2-
Piastry
что то типо
Критерии "типо"сти?


В оракловом диалекте можно применять, описанное в данной статье?
30 ноя 18, 13:49    [21749943]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5907
-2-
Piastry,

XML DB Developers Guide
30 ноя 18, 15:07    [21750114]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
mcwhite
Member

Откуда: Москва
Сообщений: 424
env
-2-
Piastry,

XML DB Developers Guide

Предварительно полезно прочесть вводную в Concepts:
Overview of XML in Oracle Database
(для пред. версий см. аналогичный раздел)
30 ноя 18, 16:24    [21750322]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
Вроде как разобрался, но нужна помощь. При запросе:

select xmlelement("document",
xmlattributes('testId' as "DocumentID"),
xmlagg(
xmlelement("row", xmlforest(t.Id "Id", t.Name "Name"))
)
) as XMLresult
from tXML t

получается ответ в одну строчку:

<document DocumentID="testId"><row><Id>1</Id><Name>Name1</Name></row><row><Id>2</Id><Name>Name2</Name></row><row><Id>3</Id><Name>Name3</Name></row><row><Id>4</Id><Name>Name4</Name></row><row><Id>5</Id><Name>Name5</Name></row><row><Id>6</Id><Name>Name6</Name></row><row><Id>7</Id><Name>Name7</Name></row><row><Id>8</Id><Name>Name8</Name></row><row><Id>9</Id><Name>Name9</Name></row><row><Id>10</Id><Name>Name10</Name></row></document>

Как сделать перенос?
1 дек 18, 02:14    [21750877]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9219
Piastry
Как сделать перенос?


В смысле сделать pretty print xml? Испoльзуй XMLSERIALIZE.

SY.
1 дек 18, 05:00    [21750892]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
Что бы выглядело вот так:

<document DocumentID="testId">
<row>
<Id>1</Id>
<Name>Name1</Name>
</row>
<row>
<Id>2</Id>
<Name>Name2</Name>
</row>
<row>
<Id>3</Id>
<Name>Name3</Name>
</row>
<row>
<Id>4</Id>
<Name>Name4
</Name>
</row>
<row>
<Id>5</Id>
<Name>Name5</Name>
</row>
<row><Id>6</Id><Name>Name6</Name></row>
<row><Id>7</Id><Name>Name7</Name></row>
<row><Id>8</Id><Name>Name8</Name></row>
<row><Id>9</Id><Name>Name9</Name></row>
<row><Id>10</Id><Name>Name10</Name></row>
</document>
1 дек 18, 06:14    [21750895]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
казинак
Member

Откуда:
Сообщений: 1198
Piastry
Вроде как разобрался, но нужна помощь. При запросе:

select xmlelement("document",
xmlattributes('testId' as "DocumentID"),
xmlagg(
xmlelement("row", xmlforest(t.Id "Id", t.Name "Name"))
)
) as XMLresult
from tXML t

получается ответ в одну строчку:
....
Как сделать перенос?

xml это и есть одна строка, понимать которую должен тот, кто принимает xml.
Например, вебсервис, которому неважно как это воспринимается человеком

Чтобы тебе посмотреть в отформатированном виде, можешь просто скопипастить в текстовый файл и открыть хоть xml редактором, хоть браузером
1 дек 18, 11:34    [21750955]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
При таком запросе:
select XMLELEMENT("city",c.name) from city c;

Результат:
<city>Красноярск</city>
<city>Москва</city>
<city>Новосибирск</city>

При таком запросе:
select XMLELEment("country",XMLAGG(XMLELEMENT("city",c.name))) from city c;

Результат:
<country><city>Красноярск</city><city>Москва</city><city>Новосибирск</city></country>

Как показано здесь: https://kbss.ru/blog/oracledb/297.html результат должен быть такой.
<country>
_______<city>Красноярск</city>
_______<city>Москва</city>
_______<city>Новосибирск</city>
</country>

_______ - Это пробелы.

Чего не так-то?
1 дек 18, 13:36    [21750999]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
-2-
Member

Откуда:
Сообщений: 14079
Piastry
Чего не так-то?
при выводе чисел, дат и других, даже чар-типов, значение само по себе от форматирования для удобочитаемости.
1 дек 18, 14:46    [21751013]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9219
Piastry
Чего не так-то?[/b]


сказали же xmlserialize Вложенный цикл FOR IN LOOP

SY.
1 дек 18, 16:06    [21751042]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
xmlserialize увеличивает отступ между тегами равный indent size = N, но перенос не делает.
2 дек 18, 01:29    [21751240]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16897
Piastry
xmlserialize увеличивает отступ между тегами равный indent size = N, но перенос не делает.

Серьезно? :)
Specify NO INDENT to strip all insignificant whitespace from the output. Specify INDENT SIZE = N, where N is a whole number, for output that is pretty-printed using a relative indentation of N spaces. If N is 0, then pretty-printing inserts a newline character after each element, placing each element on a line by itself, but omitting all other insignificant whitespace in the output. If INDENT is present without a SIZE specification, then 2-space indenting is used. If you omit this clause, then the behavior (pretty-printing or not) is indeterminate.
2 дек 18, 01:43    [21751242]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
andrey_anonymous
Piastry
xmlserialize увеличивает отступ между тегами равный indent size = N, но перенос не делает.

Серьезно? :)
Specify NO INDENT to strip all insignificant whitespace from the output. Specify INDENT SIZE = N, where N is a whole number, for output that is pretty-printed using a relative indentation of N spaces. If N is 0, then pretty-printing inserts a newline character after each element, placing each element on a line by itself, but omitting all other insignificant whitespace in the output. If INDENT is present without a SIZE specification, then 2-space indenting is used. If you omit this clause, then the behavior (pretty-printing or not) is indeterminate.


Здесь написано про отступы.
2 дек 18, 03:00    [21751245]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16897
Piastry
Здесь написано про отступы.

<Elic-style>глаза разуй.</Elic-style>
2 дек 18, 03:53    [21751247]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17927
И ты, Брут
2 дек 18, 04:58    [21751251]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Piastry
Member

Откуда:
Сообщений: 24
Specify NO INDENT to strip all insignificant whitespace from the output. Specify INDENT SIZE = N, where N is a whole number, for output that is pretty-printed using a relative indentation of N spaces. If N is 0, then pretty-printing inserts a newline character after each element, placing each element on a line by itself, but omitting all other insignificant whitespace in the output. If INDENT is present without a SIZE specification, then 2-space indenting is used. If you omit this clause, then the behavior (pretty-printing or not) is indeterminate.


Дословный перевод:

Цель

XMLSerialize создает строку или лоб, содержащий содержимое value_expr.

•Если указан параметр DOCUMENT, value_expr должен быть допустимым XML-документом.


•Если вы указываете содержимое, то value_expr не обязательно должен быть одним корневым XML-документом. Однако это должно быть допустимое содержимое XML.


•Указанный тип данных может быть строковым типом (VARCHAR2 или VARCHAR, но не NVARCHAR2), BLOB или CLOB. Значение по умолчанию-CLOB.


•Если типом данных является BLOB, можно указать предложение ENCODING для использования указанной кодировки в прологе. Xml_encoding_spec-это объявление кодировки XML (encoding="...").


•Укажите пункт версию, чтобы использовать версию в string_literal в объявление XML (<?версия XML."=.."...?>).


•Укажите без отступа, чтобы удалить все незначительные пробелы из выходных данных. Укажите размер отступа = N, где N-целое число, для вывода, который печатается с использованием относительного отступа из N пробелов. Если N равно 0, то pretty-printing вставляет символ новой строки после каждого элемента, помещая каждый элемент в строку сам по себе, но опуская все остальные незначительные пробелы в выводе. Если отступ присутствует без спецификации размера, то используется отступ 2-space. Если вы опустите это предложение, то поведение (pretty-printing или not) неопределенно.


* Скрыть значения по умолчанию и показать значения по умолчанию применяются только к данным на основе схемы XML. Если заданы значения по умолчанию SHOW и во входных данных отсутствуют необязательные элементы или атрибуты, для которых XML-схема определяет значения по умолчанию, эти элементы или атрибуты включаются в выходные данные со значениями по умолчанию. Если указать скрыть значения по умолчанию, то такие элементы или атрибуты не будут включены в выходные данные. Скрыть значения по умолчанию-это поведение по умолчанию.

Где здесь написано про переносы?
2 дек 18, 12:06    [21751306]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 8871
Piastry
Укажите размер отступа = N, где N-целое число, для вывода, который печатается с использованием относительного отступа из N пробелов. Если N равно 0, то pretty-printing вставляет символ новой строки после каждого элемента, помещая каждый элемент в строку сам по себе, но опуская все остальные незначительные пробелы в выводе. Если отступ присутствует без спецификации размера, то используется отступ 2-space. Если вы опустите это предложение, то поведение (pretty-printing или not) неопределенно.
Где здесь написано про переносы?
"Я подчеркнул".
2 дек 18, 12:09    [21751307]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16897
Basil A. Sidorov
"Я подчеркнул".

Подчеркивать надо было "pretty printing", суть которого сводится к форматированию xml-текста в человеко-читаемый вид.
ТС скорее всего пробует в каком-нибудь SQL-окошке PLSQLDeveloper, которое в гриде переносы строк стрипает.
2 дек 18, 13:04    [21751336]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
-2-
Member

Откуда:
Сообщений: 14079
Piastry
Где здесь написано про переносы?
Чудо-переводчик, дословный перевод "indent" зависит от области применения. В типографии это отступ от левой границы печати (слеванаправное письмо). В программировании отступ от начала строки.
2 дек 18, 13:07    [21751339]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 8871
andrey_anonymous
Подчеркивать надо было "pretty printing"
Про что спрашивали, то и подчеркнул
2 дек 18, 13:16    [21751346]     Ответить | Цитировать Сообщить модератору
 Re: Создание XML данных в языке SQL  [new]
XMLer
Member

Откуда:
Сообщений: 257
казинак
xml это и есть одна строка, понимать которую должен тот, кто принимает xml.

xmlelement, который использует автор, возвращает не строку а объект
3 дек 18, 18:36    [21752350]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить