То, что я пытаюсь сделать, это: реализовать пользовательскую процедуру слияния для 2 сигналов в сигнал результата.
Начните с rs = s2. Скопируйте все пользовательские поля из SIGNAL1 в RESULTSIGNAL, которых нет в SIGNAL2 (т. Е. Нет настраиваемого поля с таким же идентификатором).
"custom_fields"
в SIGNAL_STRUCT
- это тип custom_fields_table
Моя процедура выглядит так
PROCEDURE signal_merge(s1 IN SIGNAL_STRUCT, s2 IN SIGNAL_STRUCT, rs OUT SIGNAL_STRUCT)
Мой псевдокод для достижения этой цели:
for custom_field : s1.custom_fields
if(custom_field.cf_id NOT CONTAINS IN s2.custom_fields)
rs.custom_fields ADD s1.custom_field
Я не могу найти правильный синтаксис для него. Может кто-нибудь показать мне, как я могу это реализовать?
Обновление: по запросу в комментариях
create or replace TYPE SIGNAL_STRUCT AS OBJECT
id NUMBER (38),
emission_type NUMBER(19),
custom_fields custom_fields_table
create or replace TYPE custom_fields_struct FORCE
AS
OBJECT
(
field_id VARCHAR2 (128 CHAR),
field_value NUMBER (1)) FINAL ;
create or replace TYPE custom_fields_table FORCE
IS
TABLE OF wf_bool_custom_fields_struct ;
Обновление: пример
S1 имеет настраиваемые поля
S2 имеет настраиваемые поля
Первый шаг: rs = s2
Второй шаг: запустить слияние
Результат: Таблица пользовательских полей сигнала результата (rs) должна быть после слияния