gpt4 book ai didi

java - 是否可以将 rowtype 表从 java 传递到 oracle 存储过程?

转载 作者:行者123 更新时间:2023-12-01 06:17:35 25 4
gpt4 key购买 nike

我在oracle中得到了这个类型:

TYPE "RequestTable" IS TABLE OF "Requests"%ROWTYPE;

我已使用此类型作为某些存储过程的 IN(或 out)参数,如下所示:创建或替换程序

"RegisterRequestsBulk" 
(
Par_RequestsBulk IN "TableTypes"."RequestTable"
, ErrorCodeTable OUT "TableTypes"."ErrorCodeTable"
) AS
BEGIN
...

现在,我需要从 Java 调用这个 SP。我应该如何传递这种参数?

最佳答案

评论中的链接是执行此操作的“正确”方法。但是您可以在声明开始结束 block 中动态创建一个表,并将其传递给您的过程调用。在java中,创建一个像这样的字符串

  declare 
lvTable RequestTable;
lvError ErrorCodeTable;
begin
select col1, col2
BULK COLLECT INTO lvTable
from (
****
java loop to create lvTable in java string
SELECT col1, col2 -- row 1
FROM dual
union all
SELECT col1, col2 -- row n
FROM dual
****
);
RegisterRequestsBulk(lvTable, lvError);
open :? for select * from table(lvError);
end;

然后你可以用这个构造的字符串调用你的过程并期待游标中的错误。 http://docs.oracle.com/cd/A84870_01/doc/java.816/a81354/samapp2.htm

希望这是有道理的。

关于java - 是否可以将 rowtype 表从 java 传递到 oracle 存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325804/

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