A mapping and a workflow runs with a operating mode:
Their is two parameters that control this mode:
A workflow runs with only one operating mode. It takes the maximum value of all operating mode for the mapping.
You can see the operating mode that was used during the run of a mapping through the public views
select
rt.execution_audit_id,
rt.created_on,rt.object_name,
rt.return_result,
step.step_type,
rt.return_code,
rt.return_result_number,
mess.message_text
from
ALL_RT_AUDIT_EXECUTIONS rt
left join (select max(message_text) as message_text, execution_audit_id from all_rt_audit_exec_messages mess group by execution_audit_id) mess on rt.execution_audit_id = mess.execution_audit_id
inner join ALL_RT_AUDIT_MAP_RUNS runs on rt.execution_audit_id = runs.execution_audit_id
left join all_rt_audit_step_runs step on runs.map_run_id = step.map_run_id
where
rt.created_on > sysdate - (3/24)
and rt.object_name = 'MAPPING_NAME'
order by rt.created_on desc;
ORA-20101: Row based mode not supported
ORA-06512: at "WN_DW.M_OBI_GROEP_GEBRUIKER", line 854
ORA-06512: at line 1
In a workflow:
the workflow will send the above error.
Resolution: change the code generation option of the mapping from Set based to include the row based mode (for instance: All operating modes).
You can see this check in the PL/SQL body package generated:
IF get_operating_mode = MODE_ROW OR get_operating_mode = MODE_SET_FAILOVER_ROW THEN
RAISE_APPLICATION_ERROR(-20101, 'Row based mode not supported');
END IF;