ibm bpm - тип возврата инструкции выполнения SQL

как управлять результатом запроса, который возвращает целое число «select count(*) from table»?

1) Я пытался связать вывод службы SQL Execute Statement с целочисленной переменной и не работает. (несоответствие типа)

2) я также пытался использовать такие типы, как 'SQLResult', SQLResultRow, SQLResultColumn, но они не работают:

Вызвано: com.lombardisoftware.core.TeamWorksException: тип ismatch значение «[Элемент: ]» должно быть и найден экземпляр типа со структурой IBM BPM Java Class: org.jdom.Element

3) я пытался привязать вывод к переменной XMLElement, и у меня есть это значение

‹ resultSet RecordCount=\"1\" columnCount=\"1\">5‹ /columnn>‹ /record>‹ /resultSet>

так что теперь... как я могу получить доступ к атрибуту RecordCount этого узла?

в любом случае, мне не нравится так манипулировать переменной XMLType, когда используются типы SQLResult, SQLResultRow, SQLResultColumn?

****** ОТРЕДАКТИРОВАНО *******

даже если я получу результат как XMLElement... я не могу им манипулировать.

такие методы, как: tw.local.result[0].rows[0].column[0].getText() не работают (также intellisense) XMLElement как атрибут "recordCount", но я не знаю, как получить его значение..

В любом случае, единственный обходной путь, который я нашел, - это изменить запрос, чтобы вернуть нормальный набор записей (не скалярное значение) select field from table вместо select count(field) from table, чтобы я мог сопоставить выходное значение со списком объектов, а затем подсчитать его length ...

некрасиво и грязно :-(

кто-нибудь знает, как манипулировать XMLElement в блоке сценария?


person alex    schedule 11.06.2018    source источник


Ответы (2)


Пожалуйста, попробуйте это.

Свяжите выходную переменную из оператора выполнения sql как тип «ЛЮБОЙ».

имя переменной – результат (ЛЮБОЙ)

Запрос — выберите количество (поле) как COUNTVAL из таблицы.

tw.local.totalCount = tw.local.result[0].rows[0].indexedMap.COUNTVAL;

person BharathwajRK    schedule 11.08.2018
comment
'Variable type was not a complex type: ANY'. INPUT BINDINGS sql = "select count(codice) as conteggio from prodotti", returnType= "ANY", dataSounrceName = "jdbc/Mysourcename" (работает, проверено с другими запросами), OUTPUT BINDINGS tw.local.result (ANY). я также пытался удалить "returnType", но в этом случае нет исключения, но ни результат - person alex; 13.08.2018
comment
Извините, мой синтаксис был неправильным. Попробуйте ниже. Если вы используете tw.local.result (ANY). Затем вы можете установить returnType = null во входных привязках. tw.local.totalCount = tw.local.result[0].rows[0].indexedMap.COUNTVAL; - person BharathwajRK; 13.08.2018
comment
Спасибо, это работает! пожалуйста, отредактируйте исходный пост, чтобы я пометил его как решенный! большое спасибо. PS: есть ли у вас какие-либо документы о том, как автоматически сопоставляются возвращаемые типы и как узнать больше? документация IBM отстой!!! - person alex; 14.08.2018

Используйте тип возвращаемого значения как XMLElement, затем привяжите XMLElement в сопоставлении выходных данных.

Например: если вы используете tw.local.output в качестве отображения вывода (типа XMLElement), то

log.info("Count "+tw.local.output.xpath('/resultSet/record/column').item(0).getText());

Это напечатает количество. Если вы хотите получить атрибут "recordCount", используйте

tw.local.output.getAttribute("recordCount");
person Naveen Rapuru    schedule 10.09.2018