我沒有問題從PL/SQL向Java傳遞數字和字符串,但是如何通過數組?我從PL/SQL調用Java - 而不是其他方式。如何將數組從Java返回到PL/SQL?
以下是get_widgets_as_string
按預期工作的示例。如何編寫PL/SQL 呼叫規範的so19j.get_widgets_as_array()
,以便我可以從PL/SQL調用它?
我已閱讀Publishing Java Classes With Call Specifications我可以看到嵌套表對應於oracle.sql.ARRAY
,但我無法正常工作。我可能錯過了一些微不足道的細節,因爲我不是Java程序員。
create or replace and compile java source named "so19j" as
import java.lang.*;
public class so19j {
public static String get_widgets_as_string() {
String widgets = "foo;bar;zoo";
return widgets;
}
public static String[] get_widgets_as_array() {
String[] widgets = new String[]{"foo", "bar", "zoo"};
return widgets;
}
};
/
show errors java source "so19j"
create or replace function get_widgets_as_string return varchar2 as
language java name 'so19j.get_widgets_as_string() return java.lang.String';
/
show errors
declare
widgets constant varchar2(32767) := get_widgets_as_string;
begin
dbms_output.put_line('widgets = ' || widgets);
end;
/
/* How to write a call specification for so19j.get_widgets_as_array so that it
can be excercised by the PL/SQL block below ? */
declare
type widgets_t is table of varchar2(32767);
widgets constant widgets_t := get_widgets_as_array;
begin
for i in widgets.first .. widgets.last loop
dbms_output.put_line('widgets(' || i || ') = ' || widgets(i));
end loop;
end;
/
我很抱歉,但我在盯着總不理解這個答案。對我而言,這僅僅是一個gobbledygook。你(或其他人)是否願意詳細闡述一下? – user272735