Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Заполнение шаблона сообщения  [new]
PL/SQL
Member

Откуда:
Сообщений: 92
Есть таблица с шаблонами сообщений:

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 числа.'
2 дек 19, 09:44    [22030111]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2758
PL/SQL,

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

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

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

.....
stax
2 дек 19, 09:57    [22030116]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
Elic
Member

Откуда:
Сообщений: 29976
PL/SQL
Возможные имена макропеременных в шаблонах могут быть любыми, подстановка осуществляется в порядке следования.
Говно-дизайн.
2 дек 19, 10:09    [22030122]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
PL/SQL
Member

Откуда:
Сообщений: 92
Elic
PL/SQL
Возможные имена макропеременных в шаблонах могут быть любыми, подстановка осуществляется в порядке следования.
Говно-дизайн.

Согласен. Т.е. без функции не обойтись?
2 дек 19, 10:44    [22030142]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
Elic
Member

Откуда:
Сообщений: 29976
PL/SQL
без функции не обойтись?
Можно, но ненужно. Нужно уметь выбирать правильный инструмент для решения задачи.
2 дек 19, 10:59    [22030152]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2758
PL/SQL

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


через гланды
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
2 дек 19, 11:52    [22030194]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 1797
PL/SQL,

Б-же мой, зачем вы всё это тащите в субд.
2 дек 19, 12:06    [22030204]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2758
crutchmaster
PL/SQL,

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


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

....
stax
2 дек 19, 12:13    [22030207]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
Elic
Member

Откуда:
Сообщений: 29976
crutchmaster
зачем вы всё это тащите в субд.
А куда надо, по-твоему?
2 дек 19, 12:37    [22030242]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 1797
Elic,

В промежуточное ПО.
2 дек 19, 12:50    [22030253]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение шаблона сообщения  [new]
Elic
Member

Откуда:
Сообщений: 29976
crutchmaster
В промежуточное ПО.
Каждый оправдывает существование того ПО, которое ему нравится.
2 дек 19, 13:04    [22030263]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить