diff --git a/db/PKG_P8PANELS_QE_BASE.pck b/db/PKG_P8PANELS_QE_BASE.pck index 07cd11f..d1aaf98 100644 --- a/db/PKG_P8PANELS_QE_BASE.pck +++ b/db/PKG_P8PANELS_QE_BASE.pck @@ -473,6 +473,10 @@ create or replace package body PKG_P8PANELS_QE_BASE as P_EXCEPTION(0, 'Имя аргумента содержит недопустимые символы (разрешены латинские буквы, цифры и символ нижнего подчеркивания).'); end loop; + for C in (select null from DUAL where not REGEXP_LIKE(SUBSTR(SNAME, 1, 1), '^[A-z]+$')) + loop + P_EXCEPTION(0, 'Имя аргумента должно начинаться с буквы.'); + end loop; if (UPPER(SNAME) in (UPPER(SARG_NAME_PAGE), UPPER(SARG_NAME_PAGE_SIZE))) then P_EXCEPTION(0, 'Это имя аргумента зарезервировано Системой.'); end if; @@ -580,7 +584,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as loop begin /* Возвращаем найденный индекс */ - if (RARGS(I).SNAME = SNAME) then + if (UPPER(RARGS(I).SNAME) = UPPER(SNAME)) then return I; end if; exception @@ -612,7 +616,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as end if; /* Проверим уникальность имени */ if ((SNAME is not null) and (TARGS_INDEX_BY_NAME(RARGS => RARGS, SNAME => SNAME) is not null)) then - P_EXCEPTION(0, 'Аргумент с именем "%s" уже существует.', SNAME); + P_EXCEPTION(0, 'Аргумент с именем "%s" уже существует.', UPPER(SNAME)); end if; /* Формируем аргумент */ RARG := TARG_MAKE(SNAME => SNAME, @@ -2958,12 +2962,6 @@ create or replace package body PKG_P8PANELS_QE_BASE as end if; end BUILD_WHERE; begin - /* - TODO: owner="root" created="13.10.2025" - text="Контроль имен аргументов запроса: только латинские и фифры и подчеркивание, начинать только с буквы. - Принудительный APPERCASE - Контроль уникальности имени аргумента" - */ /* TODO: owner="root" created="10.09.2025" text="Предусмотреть отладочные значения для аргументов запроса"