Параметр хранимой процедуры, возвращающий ноль
У меня есть хранимая процедура, и я вызываю ее, используя стандартный синтаксис (я говорю это, но я никогда раньше не вызывал процедуру).
Хранимая процедура, при вызове через Toad или SQLDeveloper, она возвращает правильное значение (которое является числом). Хранимая процедура извлекает данные из одной таблицы и вставляет их в другую. Процедура работает и работает, когда я ее вызываю, она просто не возвращает правильное значение.
Однако когда я использую приведенный ниже код, я получаю 0 при использовании getInt (что эквивалентно нулю):
String testCallable = "{call PKG_RING_EDIT_CORE_TABLES.move_core_to_preload(?,?)}";
cstmt = con.prepareCall(testCallable);
cstmt.setInt(1, 196);
cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.NUMBER);
Integer rows = cstmt.executeUpdate();
System.out.println("Rows affected " + rows);
Integer resultingId = cstmt.getInt(2);
System.out.println("Pulled record from core table. New pre_record_load_id = " + resultingId);
Если бы кто-нибудь мог дать мне какое-либо руководство относительно того, почему это возвращает нуль, то это было бы очень ценно. Я ценю, что это может быть сложно, не увидев код процедуры (он довольно длинный, поэтому я не публикую его), однако любые рекомендации хороши.
Благодарю.
Редактировать:
Вот объявление процедуры:
procedure move_core_to_preload (p_encounter_id_i_nr in encounters.encounter_id%type
, p_pre_rec_ld_id_o_nr out pre_record_load.pre_record_load_id%type)
Вот раздел, который возвращает значение из процедуры:
p_pre_rec_ld_id_o_nr := lv_PRE_RECORD_LOAD_ID_nr; -- pass out PK id for inserted record