ЦИТК-979 - Редактор запросов - Контроль имени аргументов: только латинские буквы, цифры и подчеркивание, начало только с буквы, принудительный APPERCASE, контроль уникальности

This commit is contained in:
Mikhail Chechnev 2025-10-13 17:03:32 +03:00
parent 63e3d3833e
commit 64145d7ac0

View File

@ -473,6 +473,10 @@ create or replace package body PKG_P8PANELS_QE_BASE as
P_EXCEPTION(0, P_EXCEPTION(0,
'Имя аргумента содержит недопустимые символы (разрешены латинские буквы, цифры и символ нижнего подчеркивания).'); 'Имя аргумента содержит недопустимые символы (разрешены латинские буквы, цифры и символ нижнего подчеркивания).');
end loop; 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 if (UPPER(SNAME) in (UPPER(SARG_NAME_PAGE), UPPER(SARG_NAME_PAGE_SIZE))) then
P_EXCEPTION(0, 'Это имя аргумента зарезервировано Системой.'); P_EXCEPTION(0, 'Это имя аргумента зарезервировано Системой.');
end if; end if;
@ -580,7 +584,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as
loop loop
begin begin
/* Возвращаем найденный индекс */ /* Возвращаем найденный индекс */
if (RARGS(I).SNAME = SNAME) then if (UPPER(RARGS(I).SNAME) = UPPER(SNAME)) then
return I; return I;
end if; end if;
exception exception
@ -612,7 +616,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as
end if; end if;
/* Проверим уникальность имени */ /* Проверим уникальность имени */
if ((SNAME is not null) and (TARGS_INDEX_BY_NAME(RARGS => RARGS, SNAME => SNAME) is not null)) then 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; end if;
/* Формируем аргумент */ /* Формируем аргумент */
RARG := TARG_MAKE(SNAME => SNAME, RARG := TARG_MAKE(SNAME => SNAME,
@ -2958,12 +2962,6 @@ create or replace package body PKG_P8PANELS_QE_BASE as
end if; end if;
end BUILD_WHERE; end BUILD_WHERE;
begin begin
/*
TODO: owner="root" created="13.10.2025"
text="Контроль имен аргументов запроса: только латинские и фифры и подчеркивание, начинать только с буквы.
Принудительный APPERCASE
Контроль уникальности имени аргумента"
*/
/* /*
TODO: owner="root" created="10.09.2025" TODO: owner="root" created="10.09.2025"
text="Предусмотреть отладочные значения для аргументов запроса" text="Предусмотреть отладочные значения для аргументов запроса"