Возврат нескольких значений в Java-функцию Oracle с использованием типов - PullRequest
0 голосов
/ 25 сентября 2019

Невозможно вернуть несколько значений в функцию 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 или создать новый объект с измененными атрибутами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...