Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: рекомендация использования CONST.GET_CONST в SQL-запросах

...

Все используемые системой константы описаны в специальном сервисном пакете SS_CONSTANTS_PKG_S, а также  (публичный синоним CONST). Этот же пакет содержит функцию GET_CONST, возвращающую значение константы по ее коду. Также доступны в глобальном контексте CONST и в представлении SS_V_CONSTANTS.Для передачи констант в качестве значения аргумента хранимой процедуры

  • В PL/SQL-коде для передачи значений констант рекомендуется использовать обращение через пакет: CONST.<код константы>

...

  • Code Block
    languagesql
    titleПример использования констант в PL/SQL
    BEGIN
      -- Аннулировать документ с идентификатором 1577736201
      SD_DOCUMENTS_PKG.SD_DOCUMENTS_CHANGE_STATE (
         num_N_DOC_ID           => 1577736201,
         num_N_New_DOC_STATE_ID => CONST.DOC_STATE_Canceled);
    END;


  • Для SQL-запросов

...

  • , которые выполняются вне PL/SQL, рекомендуется использовать функцию CONST.GET_CONST('<код константы>'): она возвращает числовое (тип NUMBER) значение константы и в случае ошибки в названии константы вызывает исключение вида PLS-00302: component 'DOC_TYPE_CHARGEDOG' must be declared.

    Code Block
    languagesql
    titleПример использования констант в SQL через функцию CONST.GET_CONST
    -- Подсчитать количество актуальных 

...

  • актов начислений в системе
    SELECT COUNT(*)
    FROM   SD_V_DOCUMENTS
    WHERE  N_DOC_TYPE_ID  = 

...

  • CONST.GET_

...

  • CONST(

...

  • '

...

  • DOC_TYPE_

...

  • ChargeLog')

...

  • 
    AND    N_DOC_STATE_ID = 

...

  • CONST.GET_

...

  • CONST('DOC_STATE_Actual');


    Также в SQL-запросах можно применять обращение через контекст SYS_CONTEXT('CONST',

...

  • '<код константы>')

...

  • . Обратите внимание, функция SYS_CONTEXT

...

  •  всегда возвращает строковое значение. Чтобы при ее использовании не столкнуться с проблемами преобразования типов, результат

...

  • следует явно приводить к числовому

...

  • типу с помощью функции TO_NUMBER. Передача в данную функцию некорректного кода константы не приведёт к ошибке: в таком случае она возвращает NULL.

    Code Block
    languagesql
    titleПример использования констант в SQL через функцию SYS_CONTEXT
    -- Подсчитать количество актуальных актов начислений в системе
    SELECT COUNT(*)
    FROM   SD_V_DOCUMENTS
    WHERE  N_DOC_TYPE_ID  = TO_NUMBER(SYS_CONTEXT('CONST', 'DOC_TYPE_ChargeLog'))
    AND    N_DOC_STATE_ID = TO_NUMBER(SYS_CONTEXT('CONST', 'DOC_STATE_Actual'));


Приложения, постоянно взаимодействующие с

ais_name
, в целях ускорения работы и сокращения нагрузки на БД могут загружать (кэшировать) сразу все константы при инициализации. Для этого нужно сделать следующий запрос:

...