Обновление таблиц через JSON — различия между версиями

Материал из ИбисоПедии
Перейти к: навигация, поиск
(Получение скриптов с помощью функции mm.dev_dml_json)
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
 
=== Получаем данные в виде JSON ===
 
=== Получаем данные в виде JSON ===
  
select json_agg(row_to_json(e.*))::json
+
  select json_agg(row_to_json(e.*))::json
from mm.action e
+
  from mm.action e
where e.id in (7, 8)
+
  where e.id in (7, 8)
  
 
{{warning| Внимание в JSON не забываем править спецсимволы '\\', ""}}
 
{{warning| Внимание в JSON не забываем править спецсимволы '\\', ""}}
  
 
=== Формируем UPDATE ===
 
=== Формируем UPDATE ===
UPDATE  
+
UPDATE  
 
   mm.action nnn
 
   mm.action nnn
SET  
+
SET  
 
   name = fff.name,
 
   name = fff.name,
 
   def_rght_id = fff.def_rght_id,
 
   def_rght_id = fff.def_rght_id,
Строка 19: Строка 19:
 
  from  json_populate_recordset(null::mm.action,
 
  from  json_populate_recordset(null::mm.action,
 
  /* здесь JSON, полученный на первом шаге */
 
  /* здесь JSON, полученный на первом шаге */
'[{"id":8,"name":"Статкарта - массове изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSHospChangeWOT", "img16":"img\\16\\tables_edit.png", "img32":"img\\32\\tables_edit32.png"}}, {"id":7,"name":"Амбулаторные талоны - массовое изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSAmbticketChangeWOT", "img16":"img\\16\\tables_edit.png", "img32":"img\\32\\tables_edit32.png"}}]'
+
'[{"id":8,"name":"Статкарта - массове изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSHospChangeWOT", "img16":"img\\16\\tables_edit.png",  
) fff
+
"img32":"img\\32\\tables_edit32.png"}}, {"id":7,"name":"Амбулаторные талоны - массовое изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSAmbticketChangeWOT",  
 +
"img16":"img\\16\\tables_edit.png", "img32":"img\\32\\tables_edit32.png"}}]'
 +
) fff
  
where nnn.id=fff.id  
+
where nnn.id=fff.id  
  
 
== Получение скриптов с помощью функции mm.dev_dml_json ==
 
== Получение скриптов с помощью функции mm.dev_dml_json ==
Строка 31: Строка 33:
  
  
select mm.dev_dml_json('mm', 'v018', Null, 'idhvid')
+
select mm.dev_dml_json('mm', 'v018', Null, 'idhvid')
 +
 
 +
Внимание, для kis функция называется dev.dml_json
 +
 
  
 
[[Категория: Советы и рекомендации программирования MIS3 ]]
 
[[Категория: Советы и рекомендации программирования MIS3 ]]

Текущая версия на 15:22, 26 апреля 2019

Получаем данные в виде JSON

 select json_agg(row_to_json(e.*))::json
 from mm.action e
 where e.id in (7, 8)
Warning Внимание: Внимание в JSON не забываем править спецсимволы '\\', ""

Формируем UPDATE

UPDATE 
 mm.action nnn
SET 
 name = fff.name,
 def_rght_id = fff.def_rght_id,
 action_type_id = fff.action_type_id,
 img16_index = fff.img16_index,
 img32_index = fff.img32_index,
 param = fff.param
from  json_populate_recordset(null::mm.action,
/* здесь JSON, полученный на первом шаге */
'[{"id":8,"name":"Статкарта - массове изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSHospChangeWOT", "img16":"img\\16\\tables_edit.png", 
"img32":"img\\32\\tables_edit32.png"}}, {"id":7,"name":"Амбулаторные талоны - массовое изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSAmbticketChangeWOT", 
"img16":"img\\16\\tables_edit.png", "img32":"img\\32\\tables_edit32.png"}}]'
) fff
where nnn.id=fff.id 

Получение скриптов с помощью функции mm.dev_dml_json

Для облегчения существует специальная функция:

 select mm.dev_dml_json('mm', 'action')


select mm.dev_dml_json('mm', 'v018', Null, 'idhvid')

Внимание, для kis функция называется dev.dml_json