Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Заполнение шаблона сообщения / 11 сообщений из 11, страница 1 из 1
02.12.2019, 09:44
    #39896921
PL/SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
Есть таблица с шаблонами сообщений:

tmpl_id template_str
1 'Уважаемый %USER%, по договору %CONTRACT_NUM% Вам необходимо уплатить %СУММА% рублей до %ДАТА% числа.'

И таблица сообщений, где хранятся подстановочные значения для сообщений в строке через разделитель.

msg_id tmpl_id template_parаm
1 1 'Иван Иванович, 1233445, 123.45, 01.01.01'

Возможные имена макропеременных в шаблонах могут быть любыми, подстановка осуществляется в порядке следования.

Хотелось бы получить запрос, который выводил бы результирующую строку, т.е.
'Уважаемый Иван Иванович, по договору 1233445 Вам необходимо уплатить 123.45 рублей до 01.01.01 числа.'
...
Рейтинг: 0 / 0
02.12.2019, 09:57
    #39896923
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
PL/SQL,

Самое простое заменить
%USER%,%CONTRACT_NUM%,%СУММА%,%ДАТА% на %1%,%2%,%3%,%4%

дальше поменять %n% на соответствующее значение (аля using)

ps
я б не парился с sql, сделал бы ф-цию

.....
stax
...
Рейтинг: 0 / 0
02.12.2019, 10:09
    #39896928
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
PL/SQL
Возможные имена макропеременных в шаблонах могут быть любыми, подстановка осуществляется в порядке следования.
Говно-дизайн.
...
Рейтинг: 0 / 0
02.12.2019, 10:44
    #39896941
PL/SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
Elic
PL/SQL
Возможные имена макропеременных в шаблонах могут быть любыми, подстановка осуществляется в порядке следования.
Говно-дизайн.

Согласен. Т.е. без функции не обойтись?
...
Рейтинг: 0 / 0
02.12.2019, 10:59
    #39896947
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
PL/SQL
без функции не обойтись?
Можно, но ненужно. Нужно уметь выбирать правильный инструмент для решения задачи.
...
Рейтинг: 0 / 0
02.12.2019, 11:52
    #39896973
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
PL/SQL

без функции не обойтись?


через гланды
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
with tab as (
select 'Уважаемый %USER%, по договору %CONTRACT_NUM% Вам необходимо уплатить %СУММА% рублей до %ДАТА% числа.' m from dual)
,s as (select 'Иван Иванович, 1233445, 123.45, 01.01.01' txt from dual) 
,token as (select txt,value(o) p,rownum rn from s,xmltable('ora:tokenize(.,",")' passing txt) o)
,tt(x,p,rn) as (
  select regexp_replace(m,'%([^%])*%',p,1,1) x,p,1 rn 
  from tab,token where token.rn=1
  UNION ALL
  select regexp_replace(x,'%([^%])*%',token.p,1,1) x,token.p,tt.rn+1 rn 
  from tt,token 
  where token.rn=tt.rn+1)
select max(x) KEEP (DENSE_RANK LAST ORDER BY rn) txt
from tt
/
TXT
------------------------------------------------------------------------------------------------------------
Уважаемый Иван Иванович, по договору  1233445 Вам необходимо уплатить  123.45 рублей до  01.01.01 числа.



допилить regexp_replace,ora:tokenize, id, пробел и тд

.....
stax
...
Рейтинг: 0 / 0
02.12.2019, 12:06
    #39896982
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
PL/SQL,

Б-же мой, зачем вы всё это тащите в субд.
...
Рейтинг: 0 / 0
02.12.2019, 12:13
    #39896985
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
crutchmaster
PL/SQL,

Б-же мой, зачем вы всё это тащите в субд.


за такие деньги пусть тащит

....
stax
...
Рейтинг: 0 / 0
02.12.2019, 12:37
    #39897004
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
crutchmaster
зачем вы всё это тащите в субд.
А куда надо, по-твоему?
...
Рейтинг: 0 / 0
02.12.2019, 12:50
    #39897012
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
Elic,

В промежуточное ПО.
...
Рейтинг: 0 / 0
02.12.2019, 13:04
    #39897019
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение шаблона сообщения
crutchmaster
В промежуточное ПО.
Каждый оправдывает существование того ПО, которое ему нравится.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Заполнение шаблона сообщения / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]