Правильный тип для объекта Oracle - java.sql.Types.STRUCT
или oracle.jdbc.OracleTypes.STRUCT
в зависимости от уровня поддержки, который вам необходим.
Но хитрость, чтобы избавиться от ошибки PLS-00382: expression is of wrong type
, состоит в том, чтобы указать имя типа схемы. Оно должно быть написано во всех верхних регистрах , иначе вы получите invalid name pattern
исключение.
Учитывая ваш пример, может подойти что-то подобное:
stmt.registerOutParameter(1, OracleTypes.STRUCT, "EMPLOYEE_OBJ");
или
stmt.registerOutParameter(1, Types.STRUCT, "EMPLOYEE_OBJ");
После запроса execute
вы получите доступ к результату:
STRUCT result = (oracle.sql.STRUCT)stmt.getObject(1);
Object[] attr = result.getAttributes();
// attr[0] if the first field
// attr[1] the second
// and so on