Погружение в базы данных Oracle
Данная книга является руководством для начинающих специалистов в области анализа и обработки данных. В книге рассматривается язык SQL и его процедурное расширение PL/SQL от компании Oracle.

Тип данных PLS_INTEGER в PL/SQL Oracle
Тип данных PLS_INTEGER позволяет хранить целые числа в диапазоне от −2 147 483 648 до 2 147 483 647. Значения хранятся в «родном» целочисленном формате аппаратной платформы.
Несколько примеров объявлений переменных типа PLS_INTEGER:
DECLARE loop_counter PLS_INTEGER; days_in_standard_year CONSTANT PLS_INTEGER := 365; emp_vacation_days PLS_INTEGER DEFAULT 14;
Тип данных PLS_INTEGER был разработан для увеличения скорости вычислений. В результате операции со значениями типа PLS_INTEGER выполняются быстрее операций со значениями NUMBER. А поскольку значения PLS_INTEGER целочисленные, проблем совместимости при переходе с одной платформы на другую из-за них практически не бывает.
Используйте PLS_INTEGER, если ваша программа интенсивно выполняет целочисленные операции. Однако следует помнить, что в выражениях, где приходится выполнять частые преобразования к типу NUMBER и обратно, лучше изначально использовать тип NUMBER. Наибольшая эффективность достигается при использовании PLS_INTEGER для целочисленной арифметики (и счетчиков циклов) там, где удается избежать многочисленных преобразований к типу NUMBER и обратно. Как показывает следующий пример, при использовании этого типа в целочисленной арифметике полученные значения округляются до целых чисел:
DECLARE int1 PLS_INTEGER; int2 PLS_INTEGER; int3 PLS_INTEGER; nbr NUMBER; BEGIN int1 := 100; int2 := 49; int3 := int2/int1; nbr := int2/int1; DBMS_OUTPUT.PUT_LINE('integer 100/49 =' || TO_CHAR(int3)); DBMS_OUTPUT.PUT_LINE('number 100/49 =' || TO_CHAR(nbr)); int2 := 50; int3 := int2/int1; nbr := int2/int1; DBMS_OUTPUT.PUT_LINE('integer 100/50 =' || TO_CHAR(int3)); DBMS_OUTPUT.PUT_LINE('number 100/50 =' || TO_CHAR(nbr)); END; /* Программа выводит следующий результат: integer 100/49 =0 number 100/49 =.49 integer 100/50 =1 number 100/50 =.5 */
Если итоговое значение целочисленной операции выходит за пределы диапазона допустимых значений (от −2 147 483 648 до 2 147 483 647), произойдет ошибка целочисленного переполнения.
Метки: Oracle, PLS_INTEGER, Тип данных, Числа.