...
Code Block | ||||
---|---|---|---|---|
| ||||
-- Подсчитать количество актуальных инвойсов в системе SELECT COUNT(*) FROM SD_V_DOCUMENTS WHERE N_DOC_TYPE_ID = TO_NUMBER(SYS_CONTEXT('CONST', 'DOC_TYPE_Invoice')) AND N_DOC_STATE_ID = TO_NUMBER(SYS_CONTEXT('CONST', 'DOC_STATE_Actual')); |
Обратите внимание, функция SYS_CONTEXT
всегда возвращает строковое значение. Чтобы при ее использовании не столкнуться с проблемами преобразования типов, результат ее выполнения необходимо явно приводить к числовому значению с помощью функции TO_NUMBER
.
Приложения, постоянно взаимодействующие с АСР «Гидра», в целях ускорения работы и сокращения нагрузки на БД могут загружать (кэшировать) сразу все константы при инициализации. Для этого нужно сделать следующий запрос:
...
Code Block | ||||
---|---|---|---|---|
| ||||
SQL> -- Подcчитать, сколько сейчас актуальных документов в разрезе типа документа SQL> SELECT N_DOC_TYPE_ID, 2 SI_REF_PKG_S.GET_NAME_BY_ID(N_DOC_TYPE_ID) VC_DOC_TYPE, 3 COUNT(*) N_COUNT 4 FROM SD_V_DOCUMENTS 5 WHERE N_DOC_STATE_ID = TO_NUMBER(SYS_CONTEXT('CONST', 'DOC_STATE_Actual')) 6 GROUP BY N_DOC_TYPE_ID 7 ORDER BY N_COUNT DESC; N_DOC_TYPE_ID VC_DOC_TYPE N_COUNT ------------- -------------------------------------------------- 5002 Платёжное поручение 69950 4002 Кассовый ордер 9328 1002 Договор на оказание услуг 2817 3002 Инвойс 1177 6002 Счёт 515 7002 Приказ по ценам 171 11002 Банковская выписка 74 9002 Базовый договор 25 13002 Доп. соглашение 15 20002 Заявка 6 12002 Приказ по временным интервалам 3 8002 Отказ в обслуживании 1 12 rows selected |
...