Хобрук: Ваш путь к мастерству в программировании

Реализация SQL Xquery в weblogic

Недавно я участвовал в обновлении среды weblogic с версии 10.3.3.0 до 10.3.6.0. На обоих была установлена ​​одна и та же версия OSB, и после копирования всего кода мы столкнулись с проблемой. Все работало, за исключением того, что мы в конечном итоге обнаружили как часть xquery. Рассматриваемый XQuery захватил токен из базы данных, чтобы мы могли отправить запрос через бизнес-службу, а токен, который мы извлекли из базы данных, был неправильно отформатирован. Рассматриваемый XQuery был командой fn-bea:execute-sql. Там, где старая среда создала токен, отформатировала токен с возвратом каретки, новая среда выполнила тот же код и создала токен, который выглядел следующим образом:

54686973206973206120746F6B656E0D#&13;
0A54686973206973206120746F6B656E#&13;
0D0A54686973206973206120746F6B65#&13;
6E0D0A54686973206973206120746F6B#&13;
656E0D0A54686973206973206120746F#&13;
6B656E0D0A5468697320697320612074#&13;

В токене был дополнительный #&13; в конце каждой строки перед возвратом каретки (я проверил с помощью notepad++ и после этого увидел символ возврата каретки). Теперь я знаю, что #&13; — это код ASCII для возврата каретки, и я использовал небольшое форматирование xquery, чтобы удалить их в качестве обходного пути. Рассматриваемый XQuery был:

fn:replace(xs:token(TOKEN), " " , "
")

Где токен - это переменная, в которую я помещаю результаты функции sql.

Однако мне интересно, что вызвало это? эта функция xquery была удалена из более новой версии weblogic? В журналах изменений weblogic я не нашел ничего, что имело бы непосредственное отношение к этому.

Также есть ли более чистое обходное решение, чем форматирование строки как токена для удаления # вместе с возвратом каретки, а затем повторное добавление возврата каретки вместо добавленных пробелов?

Спасибо, ГолосовойЭльк

10.06.2016

Ответы:


1

Маркер имел лишний # в конце каждой строки перед возвратом каретки

Не совсем.


 — это возврат каретки (он же \r или &#xD).


 — перевод строки (он же \n или &#xA).

Таким образом, механизм xquery переводит \n в фактический символ новой строки, который понимает Блокнот, но сохраняет возврат каретки закодированным как сущность.

Если вы хотите удалить это, я думаю, replace($token, '\r','') будет работать. Вы сохраняете \n, но удаляете \r.

11.06.2016
  • После просмотра токенов в notepad++ мы получили что-то вроде: 54686973206973206120746F6B656E0D#CRLF. Ура, я не подумал о том, чтобы просто заменить возврат каретки, так как это пропустит функцию. 13.06.2016
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..