gpt4 book ai didi

java - 使用 JOOQ 从 Oracle 存储过程返回输出参数列表

转载 作者:行者123 更新时间:2023-11-30 11:02:51 35 4
gpt4 key购买 nike

作为 Oracle 存储过程的输出,我想使用 JOOQ 将 ID 列表作为输出参数返回到我的 Java 代码。 id 元素的数量可以变化。我如何使用 JOOQ 执行此操作以及应如何对 PL/SQL 过程进行编码以完成此操作。

最佳答案

Oracle 中返回集合/表/数组/游标的方式有很多种。我个人更喜欢以下方法,尽管 jOOQ 同样支持所有其他方法:

CREATE TYPE ids AS TABLE OF NUMBER(18);
/
CREATE OR REPLACE FUNCTION get_ids RETURN ids IS
v_result ids;
BEGIN
SELECT CAST(COLLECT(id) AS ids)
INTO v_result
FROM t_book;

RETURN v_result;
END get_ids;
/

相关生成的 jOOQ 类现在类似于这些:

public class GetIds extends AbstractRoutine<IdsRecord> {
// ...
}

public class IdsRecord extends ArrayRecordImpl<Long> {
// ...
}

public class Routines {

// For standalone calls
public static IdsRecord getIds(Configuration configuration) {
}

// For embedded calls
public static Field<IdsRecord> getIds() {
}
}

您现在可以这样使用独立调用:

Routines.getIds(configuration).forEach(System.out::println);

这直接产生数值

1
2
3
4

或者,您使用 DSL.table() 嵌入函数运算符(operator)

DSL.using(configuration)
.selectFrom(table(Routines.getIds()))
.fetch()
.forEach(System.out::println);

这会产生单独的记录

+------------+
|COLUMN_VALUE|
+------------+
| 1|
+------------+
+------------+
|COLUMN_VALUE|
+------------+
| 2|
+------------+
+------------+
|COLUMN_VALUE|
+------------+
| 3|
+------------+
+------------+
|COLUMN_VALUE|
+------------+
| 4|
+------------+

关于java - 使用 JOOQ 从 Oracle 存储过程返回输出参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30629740/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com