我有一个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函数中的任何内容。

最佳答案

最好更改您的PL / SQL函数。但是,如果您确实需要kudge,可以尝试以下操作:

从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可以调用才能起作用。不过大多数都是。

10-04 20:07