Погружение в базы данных PostgreSQL

Данный курс является консолидацией теоретических основ и практических примеров, которые демонстрируют работу операторов и функций SQL в системе управления базами данных PostgreSQL.

Поступить на курс

JSON в PostgreSQL

Курс «JSON в PostgreSQL» познакомит вас с форматом JSON и покажет, как создавать и обрабатывать JSON-данные в СУБД PostgreSQL.

Поступить на курс

XML в PostgreSQL

Курс по изучению и практическому применению расширяемого языка разметки XML (eXtensible Markup Language) в системе управления базами данных PostgreSQL.

Поступить на курс

Оконные функции в PostgreSQL

Курс по изучению и практическому применению оконных функций в системе управления базами данных PostgreSQL.

Поступить на курс

Массивы в PostgreSQL

Курс по изучению и практическому применению массивов (array) в системе управления базами данных PostgreSQL.

Поступить на курс

 ›  ›  ›  › Тип данных PLS_INTEGER в 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 49/100 =' || TO_CHAR(int3));
  DBMS_OUTPUT.PUT_LINE('number  49/100 =' || TO_CHAR(nbr));
  int2 := 50;
  int3 := int2/int1;
  nbr  := int2/int1;
  DBMS_OUTPUT.PUT_LINE('integer 50/100 =' || TO_CHAR(int3));
  DBMS_OUTPUT.PUT_LINE('number  50/100 =' || TO_CHAR(nbr));
END;

/*
Программа выводит следующий результат:
integer 49/100 =0
number  49/100 =.49
integer 50/100 =1
number  50/100 =.5
*/

Если итоговое значение целочисленной операции выходит за пределы диапазона допустимых значений (от −2 147 483 648 до 2 147 483 647), произойдет ошибка целочисленного переполнения.

Метки: , , , .

Записи по теме

Комментарии к записи

  1. Андрей:

    Добрый. в примере в DBMS_OUTPUT
    не 100/49 и 100/50
    а 49/100 и 50/100.
    Спасибо за статью!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *