gpt4 book ai didi

java - 从java如何调用存储过程传递oracle游标作为参数

转载 作者:行者123 更新时间:2023-12-01 15:49:02 28 4
gpt4 key购买 nike

我正在使用 Java + iBatis,并且需要调用一个以游标作为参数的 Oracle 存储过程。 Google 并没有帮助我找到如何调用接受游标作为来自 java 的参数的存储过程的代码示例。

如何实现这一点?

场景步骤:

 1. Java calls a Stored Proc passing primitives (varchar, char, etc) as
parameters
2. Java retrieves the cursor returned from Step 1
3. Java calls a Stored Proc passing cursor from Step 2 as an argument //how?

最佳答案

如果这些确实是唯一的步骤——也就是说,在两次调用之间您没有在 Java 中执行任何重要的操作——那么对我来说,完全避免返回 Java 更有意义。

如果第一个过程实际上是一个函数,您可以简单地执行一个嵌套调用:

BEGIN proc2(proc1(...)); END;

游标在 Oracle 内部传递,根本不需要由 Java 处理。

如果您的第一个过程是将光标作为 OUT 参数返回的过程,您可以为其编写一个包装函数并执行相同的操作:

CREATE OR REPLACE FUNCTION func1(...)
RETURN SYS_REFCURSOR
AS
foo SYS_REFCURSOR;
BEGIN
proc1(..., foo);
RETURN foo;
END func1;
/

然后开始 proc2(func1(...)); END; 应该可以工作。

现在,如果您确实需要在两个调用之间转到 Java,那么我会在从第一个过程检索输出值时尝试使用 OracleTypes.CURSOR,然后简单地传递该对象进入第二道工序。我不知道这是否有效;如果没有,那么可能没有直接的方法来做到这一点。

关于java - 从java如何调用存储过程传递oracle游标作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508376/

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