При передаче 32-битных параметров компилятору C ++ не важно, является ли параметр подписанным или беззнаковым, он просто помещает 32-битные в стек для их передачи. Где значения со знаком и без знака находятся в сравнениях, выполненных в коде.
Звучит так, как будто вы передаете значение без знака функции, которая ожидает значение со знаком. Ваше неподписанное значение больше 2147483647 затем интерпретируется как значение со знаком, которое ожидала функция, означающее, что оно интерпретируется как отрицательное число. Если функция, которую вы вызываете, является процедурой Oracle, то я подозреваю, что процедура определена как принятие значения со знаком.