Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 XMLQUERY. Можно ли использовать конкатенацию в XQuery_string  [new]
alexz1900
Member

Откуда:
Сообщений: 1
Доброго времени суток.
Есть запрос :
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" :
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;

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

Сообщение было отредактировано: 29 май 21, 17:57
28 май 21, 15:28    [22328511]     Ответить | Цитировать Сообщить модератору
 Re: XMLQUERY. Можно ли использовать конкатенацию в XQuery_string  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10215
alexz1900

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


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

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.
28 май 21, 16:20    [22328550]     Ответить | Цитировать Сообщить модератору
 Re: XMLQUERY. Можно ли использовать конкатенацию в XQuery_string  [new]
Sayan Malakshinov
Member

Откуда: Мск
Сообщений: 5888
alexz1900,

старая проблема, просто заверни в скобочки:
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;
29 май 21, 18:07    [22328818]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить