[英]Is it possible to pass a table of rowtype from java to an oracle stored procedure?
我在oracle中得到了这种类型:
TYPE "RequestTable" IS TABLE OF "Requests"%ROWTYPE;
我已将此类型用作某些存储过程的IN(或out)参数,例如:创建或替换PROCEDURE
"RegisterRequestsBulk"
(
Par_RequestsBulk IN "TableTypes"."RequestTable"
, ErrorCodeTable OUT "TableTypes"."ErrorCodeTable"
) AS
BEGIN
...
现在,我需要从Java调用此SP。 我应该如何传递此类参数?
注释中的链接是执行此操作的“正确”方法。 但是您可以在声明开始结束块中动态创建一个表,并将其传递给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
希望有道理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.