Возможно ли опциональное сопоставление вывода в службах данных WSO2?

У меня есть хранимая процедура Oracle, которая имеет Oracle REF CURSOR в качестве параметра OUT. Когда данные присутствуют в БД, выполняется один оператор выбора, и REF CURSOR будет иметь столбцы из сопоставленных операторов выбора, к которым можно получить доступ в сопоставлении OUTPUT службы данных. Однако, когда нет данных для соответствующего ввода в хранимую процедуру, выполняется другой оператор выбора. Этот второй оператор SELECT имеет другой набор столбцов. (Короче говоря, любой из двух операторов select выполняется в зависимости от ввода в хранимую процедуру с различным набором столбцов в обоих операторах select)

Поскольку мы определяем выходное сопоставление со столбцами БД в службе данных, и в этом сценарии, поскольку выполняются разные состояния выбора с другим набором столбцов, служба данных не может найти все столбцы, определенные в выходном сопоставлении, каждый раз, когда я выполняю хранимая процедура, поэтому я получаю следующую ошибку

<axis2ns19:DataServiceFault xmlns:axis2ns19="http://ws.wso2.org/dataservice">Error obtaining parser from data source:DS Fault Message: Error in 'SQLQuery.processStoredProcQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: GET_USER_DS
Location: /GET_USER_DS.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: USER_op
Current Params: {in_user_id=111111111}
Nested Exception:-
DS Fault Message: Error in 'StaticOutputElement.execute', cannot find parameter with type:column name:DASHBOARDID
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
"

Есть ли способ определить дополнительное сопоставление вывода для служб данных, чтобы, даже если столбец в сопоставлении вывода недоступен в возвращаемом наборе результатов, я не получил эту ошибку?

Пожалуйста, дайте мне знать. спасибо Абхиджит


person Abhijit Diwan    schedule 14.01.2013    source источник


Ответы (1)


В DSS 3.0.0 и более поздних версиях вы можете установить option="true" для элементы результата, значение которых не определено. Итак, в вашем случае для элементов, которые возвращаются из REF_CURSOR и других операторов выбора, установите option="true" в определениях элементов результатов ваших баз данных.

<result element="element" rowName="elements" >
  <element name="DASHBOARDID" column="DASHBOARDID" xsdType="xs:string" optional="true"/>
</result>
person Lakmali Erandi Baminiwatta    schedule 15.01.2013
comment
большое спасибо за быстрый ответ. Поскольку я использую ESB 4.0.3 и плагин сервера данных, не могли бы вы сообщить нам, какая версия плагина WSO2 DS будет иметь эту функцию в ESB 4.0.3? Еще раз спасибо за быстрый ответ. - person Abhijit Diwan; 15.01.2013
comment
Привет, я видел документацию для WSO2 DS, и этот необязательный тег не фигурирует в документации. docs.wso2.org/wiki/display/DSS301/Data+ Услуги+и+ресурсы. Также, пожалуйста, дайте мне знать, какую версию функции службы данных я должен использовать для WSO2 ESB 4.0.3, чтобы иметь эту функцию. Какой репозиторий я должен использовать? Пожалуйста, найдите ошибку, с которой я столкнулся в этом вопросе, который я задал сегодня - stackoverflow.com/questions/14349240/ - person Abhijit Diwan; 16.01.2013
comment
Загрузите WSO2 ESB 4.5.1 и установите функции служб данных 4.0.2, используя репозиторий dist.wso2.org/p2/carbon/releases/4.0.2. - person Lakmali Erandi Baminiwatta; 16.01.2013