在Groovy中使用OUT参数调用匿名PL / SQL

时间:2016-01-14 20:34:24

标签: oracle groovy

鉴于功能

DECLARE
TYPE t_ids IS TABLE OF PGD.ITEM_CHANGE.id%TYPE;
l_ids t_ids;
BEGIN
    UPDATE PGD.ITEM_CHANGE
    SET    IN_PROCESS = 1
    RETURNING id BULK COLLECT INTO l_ids;
COMMIT;
END;

如何匿名调用groovy(没有CREATE PROCEDURE)来保持L_IDS

我正在尝试将上面的内容放在String,PROC中,然后调用:

List<Object> params = [Sql.ARRAY]
sql.callWithRows(PROC, params) {
    result ->
        println result
}

我得到例外:

java.sql.SQLException: Invalid column index at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterInternal(OracleCallableStatement.java:125)
...

有人可以用这种语法帮助我吗?

1 个答案:

答案 0 :(得分:0)

首先,你粘贴的东西不是PL / SQL函数。它是未命名的块,您无法从未命名的块中提取PL / SQL集合。

请使用RETURN语句将结果转换为存储函数,或使用OUT参数将其转换为程序。