Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XMLQUERY. Можно ли использовать конкатенацию в XQuery_string / 3 сообщений из 3, страница 1 из 1
28.05.2021, 15:28
    #40073847
alexz1900
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLQUERY. Можно ли использовать конкатенацию в XQuery_string
Доброго времени суток.
Есть запрос :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT XMLQUERY('copy $i:=$p modify(delete nodes $i//Request/Body,insert node $p1 as last into $i//Request
                ,insert node $p2 as last into $i//Request,
                insert node $p3 as last into $i//Request) return $i'
                PASSING xmltype('<Request><Body></Body></Request>') AS "p",
                xmltype('<b1></b1>') AS "p1",
                xmltype('<b2></b2>') AS "p2",
                xmltype('<b3></b3>') AS "p3"
RETURNING CONTENT) FROM   dual;



Пробую сделать конкатенацию и получаю ошибку "Ожидается ключевое слово Returning" :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT XMLQUERY('copy $i:=$p modify(delete nodes $i//Request/Body,insert node $p1 as last into $i//Request'||
                ',insert node $p2 as last into $i//Request,'||
                'insert node $p3 as last into $i//Request) return $i'
                PASSING xmltype('<Request><Body></Body></Request>') AS "p",
                xmltype('<b1></b1>') AS "p1",
                xmltype('<b2></b2>') AS "p2",
                xmltype('<b3></b3>') AS "p3"
RETURNING CONTENT) FROM   dual;


Подскажите пож. в чем может быть дело? или тут нельзя использовать конкатенацию?
...
Рейтинг: 0 / 0
28.05.2021, 16:20
    #40073871
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLQUERY. Можно ли использовать конкатенацию в XQuery_string
alexz1900

Подскажите пож. в чем может быть дело? или тут нельзя использовать конкатенацию?


XQuery_string "не любит" выражения:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
with t as (
           select 'copy $i:=$p modify(delete nodes $i//Request/Body,insert node $p1 as last into $i//Request'||
                  ',insert node $p2 as last into $i//Request,'||
                  'insert node $p3 as last into $i//Request) return $i' xquery_string
            from  dual
         )
SELECT  XMLQUERY(
                 xquery_string
                 PASSING xmltype('<Request><Body></Body></Request>') AS "p",
                         xmltype('<b1></b1>') AS "p1",
                         xmltype('<b2></b2>') AS "p2",
                         xmltype('<b3></b3>') AS "p3"
                 RETURNING CONTENT
                )
  FROM  t
/

XMLQUERY(XQUERY_STRINGPASSINGXMLTYPE('<REQUEST><BODY></BODY></REQUEST>')AS"P",XM
--------------------------------------------------------------------------------
<Request>
  <b1/>
  <b2/>
  <b3/>
</Request>


SQL>



SY.
...
Рейтинг: 0 / 0
29.05.2021, 18:07
    #40074057
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLQUERY. Можно ли использовать конкатенацию в XQuery_string
alexz1900,

старая проблема, просто заверни в скобочки:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT XMLQUERY(
                (
                'copy $i:=$p modify(delete nodes $i//Request/Body,insert node $p1 as last into $i//Request'||
                ',insert node $p2 as last into $i//Request,'||
                'insert node $p3 as last into $i//Request) return $i'
                )
                PASSING xmltype('<Request><Body></Body></Request>') AS "p",
                xmltype('<b1></b1>') AS "p1",
                xmltype('<b2></b2>') AS "p2",
                xmltype('<b3></b3>') AS "p3"
RETURNING CONTENT) FROM   dual;
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XMLQUERY. Можно ли использовать конкатенацию в XQuery_string / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]