2016-08-16 206 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