В соответствии со спецификацией JDBC вы должны получить набор результатов перед выходными параметрами
Вот исходная спецификация
7.1.7 Извлечь параметры OUT после результатов
Из-заИз-за ограничений, налагаемых некоторыми СУБД, рекомендуется, чтобы для максимальной переносимости все результаты в объекте ResultSet, сгенерированном при выполнении объекта CallableStatement, были получены до того, как будут получены параметры OUT.Когда все значения получены из результирующего набора, метод ResultSet.next вернет false.
Если объект CallableStatement возвращает несколько объектов ResultSet (что возможно только в том случае, если он выполняется с вызовом метода execute), все результаты должны быть получены до того, как будут получены параметры OUT.В этом случае, чтобы быть уверенным в доступе ко всем результатам, необходимо вызывать методы Statement getResultSet, getUpdateCount и getMoreResults до тех пор, пока больше не будет результатов.Когда все результаты исчерпаны, метод getMoreResults возвращает false, а метод getUpdateCount возвращает -1.