forked from CITKParus/P8-Panels
БД: Серверный 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 -- Рег. номер документа
|
NDOCUMENT in number -- Рег. номер документа
|
||||||
) return number; -- Флаг доступности (см. константы NACCESS_*)
|
) return number; -- Флаг доступности (см. константы NACCESS_*)
|
||||||
|
|
||||||
|
/* Подготовка пользовательской строки поиска для вставки в запрос */
|
||||||
|
procedure UTL_SEARCH_PREPARE
|
||||||
|
(
|
||||||
|
SSEARCH in varchar2, -- Пользовательская строка поиска
|
||||||
|
SSEARCH_PREPARED out varchar2 -- Подготовленная строка поиска
|
||||||
|
);
|
||||||
|
|
||||||
/* Базовое исполнение действий */
|
/* Базовое исполнение действий */
|
||||||
procedure PROCESS
|
procedure PROCESS
|
||||||
(
|
(
|
||||||
@ -191,6 +198,36 @@ create or replace package body PKG_P8PANELS_BASE as
|
|||||||
return NACCESS_NO;
|
return NACCESS_NO;
|
||||||
end UTL_DOC_ACCESS_CHECK;
|
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
|
function MSG_NO_DATA_MAKE
|
||||||
(
|
(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user