Параметр хранимой процедуры, возвращающий ноль

У меня есть хранимая процедура, и я вызываю ее, используя стандартный синтаксис (я говорю это, но я никогда раньше не вызывал процедуру).

Хранимая процедура, при вызове через 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

0 ответов

Другие вопросы по тегам