2016-08-16 114 views
1

我有一個PLSQL函數。 PKG_GAS_KT.GET_DEPTINFO('{UserID}')該函數返回用戶所在部門的名稱。如何從java中調用PLSQL函數

現在,我已經有了java中的UserID列表。我怎樣才能通過所有的用戶ID並獲得相應用戶的部門。 有沒有辦法做到這一點,而不會把它放在一個for循環中,並進行不需要的數據庫調用。另外:

CallableStatement callSt = con.prepareCall("{?= call PKG_GAS_KT.GET_DEPTINFO(?)}");`// Is this correct way to call my PLSQL function? 
    callSt.setInt(1,101); 
    callSt.registerOutParameter(2, Types.STRING); 
    callSt.execute(); 
    Double output = callSt.getString(2); 

任何指導表示讚賞。 我無法更改PLSQL函數中的任何內容。

+0

「遞歸調用...」您沒有正確使用「遞歸」這個詞 – ControlAltDel

+0

[將數組傳遞給oracle過程]可能重複(http://stackoverflow.com/questions/5198856/pass-array- to-oracle-procedure) – OldProgrammer

+0

ControlAltDelete完成了它。謝謝。 @OldProgrammer我無法更改PLSQL函數中的任何內容。我沒有訪問權限。 – Kid101

回答

1

更好地改變你的PL/SQL函數。但是,如果你真的需要一個雜牌組裝電腦,你可以試試這個:

問題從Java下面的語句是一個JDBC查詢:

select ids.column_value id, 
     pkg_gas_gt.get_deptinfo(ids.column_value) deptinfo 
from TABLE(SYSTEM.NUMBER_TBL_TYPE(?)) ids; 

...其中?是你的參數,它的JDBC陣列請輸入用戶ID。

查詢的結果集是每個ID以及函數的結果。該函數需要從SQL中調用才能工作。雖然大部分都是。

+0

謝謝你的迴應。我是PLSQL的新手,但在兩天內學到了很多東西。謝謝。 – Kid101