如何从java调用PLSQL函数

时间:2016-08-16 18:11:42

标签: java oracle plsql callable-statement

我有一个PLSQL功能。 PKG_GAS_KT.GET_DEPTINFO(' {UserID}')此函数返回用户所在部门的名称。

现在,我已经在java中列出了UserID。如何通过所有UserId并获取相应用户的部门。 有没有办法在不将它放入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功能。

1 个答案:

答案 0 :(得分:1)

最好更改PL / SQL功能。但是,如果你真的需要一个kludge,你可以试试这个:

从Java发出以下语句作为JDBC查询:

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

...其中?是您的参数,是您要传入的用户ID的JDBC数组。

查询的结果集将是每个ID以及函数的结果。该函数需要从SQL调用才能工作。但大多数都是。