簡體   English   中英

使用光標作為輸入從tibco bw調用存儲過程

[英]Invoke a stored procedure from tibco bw with cursor as inputs

我有一個應在tibco中執行的提供的存儲過程(SP),該存儲過程具有以下簽名:

PROCEDURE  GET_STOCK_QTY(
  WarehouseId Number,
  LineItem ref_lines,
  ResponseCode OUT Number,
  ResponseDesc OUT Varchar2,
  RespLineItems OUT sys_refcursor
);

* ref_lines *定義如下:

TYPE items_record is RECORD(
  ItemCode varchar2(15),
  ItemQuantity number
);
type ref_lines IS REF CURSOR RETURN items_record;

因此,您已經注意到,我有一個游標作為SP的輸入和輸出。 我已經在搜索此類問題,並發現tibco不支持這些in和輸出類型,我還發現它甚至不支持布爾型本機類型,這很奇怪...:S無論哪種方式,就我所讀的內容而言,兩種可能的解決方案都在開發中:

  1. SQL直接
  2. Java自定義功能

現在,我的疑惑。

如果我要使用解決方案編號1,則必須構建游標以提供純sql的輸入,但是我要怎么做呢? 我是否必須使用輸入的值創建一個臨時表,然后為該表打開一個游標? 這是唯一的方法嗎?

我還沒有探索第二種解決方案,但是我認為Java可以支持這類輸入和輸出,而我只是聲明數組。 這個假設正確嗎? 這會很容易嗎,還是我將像在解決方案編號1中那樣調用sql?

PS:這是兩種可能的解決方案嗎? 是否有任何帶解決方法的tibco專家使BW支持此WEIRD輸入和輸出? :P

在此先感謝Tiago Brunhoso Nunes

經過大量的搜索之后,我設法克服此問題的唯一方法是在數據庫上創建一個包裝程序包,該程序包將tibco無法識別的輸入和輸出封裝為它可以識別的內容。

我現在所做的是:

  1. 創建了兩個新表(一個用於輸入游標,另一個用於輸出);
  2. 創建了一個包裝器SP,該包裝器僅接受簡單的數據類型作為輸入,而沒有光標;
  3. Tibco將值的輸入數組插入到創建的表中。
  4. 包裝程序SP打開一個指向該表的游標,並使用該游標調用第一個SP。
  5. 最后,它將來自輸出游標的值填充到輸出表中,然后Tibco讀取該表。

(我知道這可能不是最好的方法...:S)

PS:據我所知,oracle pl sql支持本機xml輸入,我本可以采用該解決方案的,這似乎是一種更清潔的解決方案,但是要花很長時間才能實施...如果有人知道的話在此,我將感謝一些提示! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM