我在oracle中得到了这个类型:
TYPE "RequestTable" IS TABLE OF "Requests"%ROWTYPE;
我已将此类型用作某些存储过程的IN(或out)参数,如下所示: 创建或替换 程序
"RegisterRequestsBulk"
(
Par_RequestsBulk IN "TableTypes"."RequestTable"
, ErrorCodeTable OUT "TableTypes"."ErrorCodeTable"
) AS
BEGIN
...
现在,我需要从Java调用此SP。我应该如何传递这种参数?
答案 0 :(得分:0)
评论中的链接是执行此操作的“正确”方式。 但是你可以在声明开始结束块中动态创建一个表,并将其传递给你的proc调用。 在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;
然后你可以使用这个构造的字符串调用你的proc并期望游标中的错误。 http://docs.oracle.com/cd/A84870_01/doc/java.816/a81354/samapp2.htm
希望这是有道理的。