2013-01-14 64 views
0

我有Oracle存儲過程,它具有Oracle參數CURSOR作爲OUT參數。當DB中存在數據時,將執行一條select語句,REF CURSOR將從映射的select語句中獲得列,這些列可以在數據服務的OUTPUT映射中訪問。但是,如果沒有用於存儲過程的相應輸入的數據,則會執行不同的select語句。這第二個SELECT語句具有不同的一組列。 (簡而言之,根據存儲過程的輸入執行2個選擇語句,這兩個語句在select語句中具有不同的列集合)在WSO2數據服務中可以有輸出映射是可選的嗎?

由於我們定義了數據服務中的數據列的輸出映射, ,不同組列,越來越執行,數據服務是無法找到在輸出映射我每次執行存儲過程時定義的所有列,因此我獲得以下錯誤

<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 
" 

有什麼辦法來定義DataServces的可選輸出映射,這樣即使輸出映射中的列在返回結果集中不可用,我也不會得到這個錯誤R'

請讓我知道。 謝謝 Abhijit

回答

0

隨着DSS 3.0.0 and later版本,你可以設置optional =「true」的結果元素的值是不確定的。因此,對於從REF_CURSOR和其他select語句返回的元素,請在dbs的結果元素定義中設置optional =「true」。

<result element="element" rowName="elements" > 
    <element name="DASHBOARDID" column="DASHBOARDID" xsdType="xs:string" optional="true"/> 
</result> 
+0

非常感謝您的及時回覆。由於我使用的是ESB 4.0.3和Data Server插件,請告訴我們哪個版本的WSO2 DS插件將在ESB 4.0.3中具有此功能?再次感謝您的及時回覆。 –

+0

嗨,我看到了WSO2 DS的文檔,並且此「可選」標籤未在文檔中找到。 「http://docs.wso2.org/wiki/display/DSS301/Data+Services+and+Resources」。另外請讓我知道我應該爲WSO2 ESB 4.0.3使用哪個數據服務功能版本來實現此功能。我應該使用哪個存儲庫?請在我今天問的這個問題中發現我遇到的錯誤 - 「http://stackoverflow.com/questions/14349240/wso2-esb-4-0-3-error-installing-data-services-feature-from-4- 0-repository「 –

+0

請使用http://dist.wso2.org/p2/carbon/releases/4.0.2/ repository下載WSO2 ESB 4.5.1並安裝數據服務4.0.2功能。 –

相關問題