# SQL CONL
```pl/sql
WHENEVER SQLERROR EXIT FAILURE ROLLBACK
SET SERVEROUTPUT ON
SELECT 'Requirement 89526: Requirement 86810: [PERF] SCRIPT PART - CONL store 3 lines instead of 1 "motifs de recours" screen' "Comment" FROM DUAL;
set serveroutput on
exec globals_pkg.GV_Run_My_Trigger := FALSE;
drop table conl_temp;
create table conl_temp as select * from conl where structure_id = 17336;
alter table conl_temp MODIFY CONL_LABEL varchar2(180);
drop table translated_conl_temp;
create table translated_conl_temp as select * from translated_conl where structure_id = 17336;
alter table translated_conl_temp MODIFY LABEL varchar2(180);
declare
v_structure_id PLS_INTEGER := 17336; -- :STRUCTURE_ID;
i PLS_INTEGER :=0;
v_updated PLS_INTEGER :=0;
v_tc_updated PLS_INTEGER :=0;
begin
dbms_output.put_line('Begin with ' || v_structure_id);
for c in (select conl.id,conl.cont_id,conl.conl_label_num, tc.id as TCID from conl join translated_CONL tc on tc.conl_id = conl.id and tc.structure_id = conl.structure_id where conl.structure_id=v_structure_id and conl.cont_id is not null and conl.conl_label_num in (1,5,8,9,18,21) )
loop
DECLARE
v_first_label_to_add VARCHAR2(180) := null;
v_second_label_to_add VARCHAR2(180) := null;
v_first_trans_label_to_add VARCHAR2(180) := null;
v_second_trans_label_to_add VARCHAR2(180) := null;
begin
i:=i+1;
-- here we look for complementatry labels if any and update TRANSLATED CONL records as well
-- TO DO manage translated CONT and cleanup ( deletion of no more used records )
-- FIRST
begin
select CONL_LABEL into v_first_label_to_add from CONL where CONL_LABEL is not null and
conl.cont_id=c.cont_id and
conl.structure_id = v_structure_id and
CONL_LABEL_NUM = decode(c.CONL_LABEL_NUM,
1,2,
5,6,
8,30,
9,10,
18,19,
21,22,null);
if c.TCID is not null then
select LABEL into v_first_trans_label_to_add from TRANSLATED_CONL
join CONL on conl.structure_id = TRANSLATED_CONL.structure_id and conl.id = TRANSLATED_CONL.CONL_ID
where CONL_LABEL is not null and
conl.cont_id = c.cont_id and
conl.structure_id = v_structure_id and
conl.CONL_LABEL_NUM = decode(c.CONL_LABEL_NUM,
1,2,
5,6,
8,30,
9,10,
18,19,
21,22,null);
end if;
begin
select CONL_LABEL into v_second_label_to_add from CONL where CONL_LABEL is not null and
conl.cont_id=c.cont_id and
CONL_LABEL_NUM = decode(c.CONL_LABEL_NUM,
1,3,
5,7,
8,null,
9,null,
18,20,
21,null,null);
if c.TCID is not null then
select LABEL into v_second_trans_label_to_add from TRANSLATED_CONL
join CONL on conl.structure_id = TRANSLATED_CONL.structure_id and conl.id = TRANSLATED_CONL.CONL_ID
where CONL_LABEL is not null and
conl.cont_id = c.cont_id and
conl.structure_id = v_structure_id and
conl.CONL_LABEL_NUM = decode(c.CONL_LABEL_NUM,
1,3,
5,7,
8,null,
9,null,
18,20,
21,null,null);
end if;
EXCEPTION WHEN No_Data_Found THEN NULL;
END;
EXCEPTION WHEN No_Data_Found THEN NULL;
END;
if v_first_label_to_add is not null then
update conl_temp set CONL_LABEL=CONL_LABEL||v_first_label_to_add || v_second_label_to_add,
technical_version = technical_version + 1
where id = c.id
and structure_id = v_structure_id;
v_updated := v_updated+1;
end if;
if c.TCID is not null then
update translated_conl_TEMP set LABEL=LABEL||v_first_trans_label_to_add || v_second_trans_label_to_add,
technical_version = technical_version + 1
where id= c.TCID
and structure_id = v_structure_id;
v_tc_updated := v_tc_updated + 1;
end if;
END;
end loop;
dbms_output.put_line('End with ' || v_structure_id || ' processed ' || i || ' CONL records, updated ' || v_updated || ' CONL records, and ' || v_tc_updated || ' TRANSLATED_CONL records.');
commit;
end;
/
```