БД: Серверный API - процедура подготовки поисковой строки от клиента для использования в SQL-запросе
This commit is contained in:
parent
ba8b7a5ce0
commit
83b0c75a3b
@ -27,6 +27,13 @@ create or replace package PKG_P8PANELS_BASE as
|
||||
NDOCUMENT in number -- Рег. номер документа
|
||||
) return number; -- Флаг доступности (см. константы NACCESS_*)
|
||||
|
||||
/* Подготовка пользовательской строки поиска для вставки в запрос */
|
||||
procedure UTL_SEARCH_PREPARE
|
||||
(
|
||||
SSEARCH in varchar2, -- Пользовательская строка поиска
|
||||
SSEARCH_PREPARED out varchar2 -- Подготовленная строка поиска
|
||||
);
|
||||
|
||||
/* Базовое исполнение действий */
|
||||
procedure PROCESS
|
||||
(
|
||||
@ -191,6 +198,36 @@ create or replace package body PKG_P8PANELS_BASE as
|
||||
return NACCESS_NO;
|
||||
end UTL_DOC_ACCESS_CHECK;
|
||||
|
||||
/* Подготовка пользовательской строки поиска для вставки в запрос */
|
||||
procedure UTL_SEARCH_PREPARE
|
||||
(
|
||||
SSEARCH in varchar2, -- Пользовательская строка поиска
|
||||
SSEARCH_PREPARED out varchar2 -- Подготовленная строка поиска
|
||||
)
|
||||
is
|
||||
/* Локальные константы */
|
||||
SANY_SYS constant char(1) := '%'; -- Маска "любое количество любых символов" Oracle
|
||||
SONE_SYS constant char(1) := '_'; -- Маска "любой один символ" Oracle
|
||||
SENT_WRD_DELIM constant varchar2(1) := ' '; -- Разделитель слов в предложении
|
||||
SANY_PRS constant varchar2(240) := PKG_OPTIONS.STARSYMB; -- Маска "любое количество любых символов" Парус
|
||||
SONE_PRS constant varchar2(240) := PKG_OPTIONS.QUESTSYMB; -- Маска "любой один символ" Парус
|
||||
begin
|
||||
/* Если пользовательская строка пустая - то это всё что угодно */
|
||||
if (SSEARCH is null)
|
||||
then
|
||||
SSEARCH_PREPARED := SANY_SYS;
|
||||
else
|
||||
/* Подменим пользовательские маски на системные и соберем подготовленную строку поиска */
|
||||
SSEARCH_PREPARED := '%' || replace(replace(replace(SSEARCH
|
||||
,SANY_PRS
|
||||
,SANY_SYS)
|
||||
,SONE_PRS
|
||||
,SONE_SYS)
|
||||
,SENT_WRD_DELIM
|
||||
,SANY_SYS) || '%';
|
||||
end if;
|
||||
end UTL_SEARCH_PREPARE;
|
||||
|
||||
/* Формирование сообщения об отсутствии значения */
|
||||
function MSG_NO_DATA_MAKE
|
||||
(
|
||||
|
Loading…
x
Reference in New Issue
Block a user