Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Oracle |
![]() ![]() |
Топик располагается на нескольких страницах: 1 2 [все] |
Piastry Member Откуда: Сообщений: 27 |
Подскажите статью, где описывается как создать xml данные в языке sql в оракловом диалекте. |
30 ноя 18, 12:56 [21749834] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
Piastry, XML DB Developers Guide |
30 ноя 18, 13:02 [21749846] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
А что то типо этого: https://info-comp.ru/obucheniest/642-for-xml-in-t-sql.html Транзакт в этом плане сильно отличается от оракла? |
30 ноя 18, 13:19 [21749884] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
|
||
30 ноя 18, 13:45 [21749938] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
В оракловом диалекте можно применять, описанное в данной статье? |
||||
30 ноя 18, 13:49 [21749943] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 5927 |
|
||
30 ноя 18, 15:07 [21750114] Ответить | Цитировать Сообщить модератору |
mcwhite Member Откуда: Москва Сообщений: 424 |
Предварительно полезно прочесть вводную в Concepts: Overview of XML in Oracle Database (для пред. версий см. аналогичный раздел) |
||||
30 ноя 18, 16:24 [21750322] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
Вроде как разобрался, но нужна помощь. При запросе: 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] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9338 |
В смысле сделать pretty print xml? Испoльзуй XMLSERIALIZE. SY. |
||
1 дек 18, 05:00 [21750892] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
Что бы выглядело вот так: <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] Ответить | Цитировать Сообщить модератору |
казинак Member Откуда: Сообщений: 1218 |
xml это и есть одна строка, понимать которую должен тот, кто принимает xml. Например, вебсервис, которому неважно как это воспринимается человеком Чтобы тебе посмотреть в отформатированном виде, можешь просто скопипастить в текстовый файл и открыть хоть xml редактором, хоть браузером |
||
1 дек 18, 11:34 [21750955] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
При таком запросе: 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] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
|
||
1 дек 18, 14:46 [21751013] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9338 |
сказали же xmlserialize Вложенный цикл FOR IN LOOP SY. |
||
1 дек 18, 16:06 [21751042] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
xmlserialize увеличивает отступ между тегами равный indent size = N, но перенос не делает. |
2 дек 18, 01:29 [21751240] Ответить | Цитировать Сообщить модератору |
andrey_anonymous Member Откуда: Москва Сообщений: 17089 |
Серьезно? :) 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] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
Здесь написано про отступы. |
2 дек 18, 03:00 [21751245] Ответить | Цитировать Сообщить модератору |
andrey_anonymous Member Откуда: Москва Сообщений: 17089 |
<Elic-style>глаза разуй.</Elic-style> |
||
2 дек 18, 03:53 [21751247] Ответить | Цитировать Сообщить модератору |
Вячеслав Любомудров Member Откуда: Владивосток Сообщений: 17962 |
И ты, Брут ![]() |
2 дек 18, 04:58 [21751251] Ответить | Цитировать Сообщить модератору |
Piastry Member Откуда: Сообщений: 27 |
Дословный перевод: Цель 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] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 9005 |
|
||
2 дек 18, 12:09 [21751307] Ответить | Цитировать Сообщить модератору |
andrey_anonymous Member Откуда: Москва Сообщений: 17089 |
Подчеркивать надо было "pretty printing", суть которого сводится к форматированию xml-текста в человеко-читаемый вид. ТС скорее всего пробует в каком-нибудь SQL-окошке PLSQLDeveloper, которое в гриде переносы строк стрипает. |
||
2 дек 18, 13:04 [21751336] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14342 |
|
||
2 дек 18, 13:07 [21751339] Ответить | Цитировать Сообщить модератору |
Basil A. Sidorov Member Откуда: Сообщений: 9005 |
![]() |
||
2 дек 18, 13:16 [21751346] Ответить | Цитировать Сообщить модератору |
XMLer Member Откуда: Сообщений: 258 |
xmlelement, который использует автор, возвращает не строку а объект |
||
3 дек 18, 18:36 [21752350] Ответить | Цитировать Сообщить модератору |
Stawros Member Откуда: Сообщений: 18 |
Piastry,with city as ( select 'Красноярск' as name from dual union all select 'Москва' as name from dual union all select 'Новосибирск' as name from dual ) select XMLROOT( XMLELEment("country",XMLAGG(XMLELEMENT("city",c.name))), VERSION '1.0" encoding="utf-8' ).getclobval() from city c результат - <?xml version="1.0" encoding="utf-8"?> <country> <city>Красноярск</city> <city>Москва</city> <city>Новосибирск</city> </country> |
7 дек 18, 17:09 [21757367] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: 1 2 [все] |
Все форумы / Oracle | ![]() |