команда esql для вставки запроса в базу данных в формате xml

#websphere #ibm-integration-bus #ibm-app-connect

#websphere #ibm-integration-bus #ibm-app-connect

Вопрос:

Я попытался вставить sql-запрос с использованием кода esql:

 INSERT INTO Database.dbo.CUSTOMERS Values (9330,'Sai',7);
 

Он работает нормально, но при попытке вставить код в формате xml, например:

 INSERT INTO Database.dbo.CUSTOMERS(ID,NAME,AGE) Values (InputRoot.XMLNSC.emps.emp.id,InputRoot.XMLNSC.emps.emp.name,InputRoot.XMLNSC.emps.emp.age);
 

Затем он показывал ошибки, такие как BIP2230E , BIP2488E , BIP2321E .

введите описание изображения здесь

Если есть какие-либо проблемы с подключением, означает, что первая команда insert также не должна работать. Выберите также работает нормально.

Есть предложения по решению проблемы?

Комментарии:

1. Srikanth — это вызов на основе SOAP (WSDL) или вызов REST? Судя по вашей ошибке моментального снимка, это похоже на вызов SOAP.

2. Остальные только я использовал http-узлы, но я не знаю, почему он отображался в формате soap. И мой номер порта также меняется автоматически…. Я новичок в этой работе..

3. Пожалуйста, используйте POSTMAN и попробуйте. Кроме того, для отладки попробуйте присвоить значения входного XML переменным типа SET ID = InputRoot . XMLNSC.emps.emp.id и проверьте, присваиваются ли значения переменной или нет. Также воспользуйтесь узлами трассировки, чтобы увидеть, как выглядят ваши данные, когда они проходят через поток сообщений, или переведите ваш поток в режим отладки, чтобы увидеть значения

4. @SrikanthKonduru: Пожалуйста, не используйте снимок экрана для ошибки. Вставьте полную ошибку SOAP в виде обычного текста в вопрос. Мы не видим полной ошибки.

5. Вам нужно потратить больше времени на свой вопрос. Скриншот бесполезен, поскольку важные детали не включены в скриншот.

Ответ №1:

Довольно очевидно, что ваши пути (InputRoot.XMLNSC.emps.emp.id , и т.д.) не существуют под InputRoot.XMLNSC. Вы можете легко проверить это с помощью отладчика или (лучше) узла трассировки. Чтобы устранить проблему, исправьте эти пути.

Вы также должны объявлять и использовать ссылочную переменную, чтобы сделать ваш ESQL более читаемым:

 -- This is not the correct path, otherwise your code would be working already!
DECLARE refEmp REFERENCE to InputRoot.XMLNSC.emps.emp;
INSERT 
    INTO Database.dbo.CUSTOMERS(ID,NAME,AGE) 
    VALUES (refEmp.id,refEmp.name,refEmp.age)