Невозможно вернуть несколько значений в функцию Oracle из java с использованием типа Oracle
Я создал тип и функцию oracle для вызова метода java с простой целью обмена значениями двух полейУ меня в Oracle тип.Все компилируется просто отлично, но когда я выполняю функцию в Oracle, я просто получаю исходные значения типа.
В Oracle:
create or replace type swapper_in as object (
a varchar2(20),
b varchar2(20) );
create or replace function swapstring (s swapper_in) return swapper_in
as language java
name 'swapperstring.swap(java.sql.Struct) return java.sql.Struct';
public class swapperstring
{
public static java.sql.Struct swap( java.sql.Struct i )
{
Object[] attribs=null;
attribs = i.getAttributes();
attribs[0] = attribs[1];
return i;
}
}
declare
s swapper_in
o swapper_in
begin
s := swapper_in('String One', 'String Two');
dbms_output.put_line( s.a );
dbms_output.put_line( s.b );
select swapstring(s) into o from dual;
dbms_output.put_line( o.a );
dbms_output.put_line( o.b );
end;
Вывод:
String One
String Two
String One
String Two
Поскольку я установил первый атрибут равным второму в java-коде, я ожидал бы, что выходные данные будут String Two для обоих полей в выходных данных.Но, похоже, он возвращает исходный объект без изменений.
Как изменить атрибуты java.sql.Struct или создать новый объект с измененными атрибутами?