1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| DECLARE CURSOR c IS
select *
from haplo
where notest IN('KCAS', 'MBCAS', 'SHGC', 'MMTCP', 'MMTP', 'MMH3', 'HMTP', 'HMH3', 'HMTCP', 'MSHGC')
and nunati = '0114035148'
order by DECODE(notest 'KCAS', 0,'SHGC', 1,'MSHGC', 2,'MMTCP', 3,'MMTP', 4,'MMH3', 5,'HMTP', 6,'HMH3', 7,'HMTCP', 8,'MBCAS', 9, 99);
BEGIN
DECLARE
Nb_MTP NUMBER(3) := 0;
varRESULTEST varchar2(1000) := NULL;
varNOTEST varchar2(1000) := NULL;
chainefinale varchar2(1000) := NULL;
BEGIN
FOR r in c
LOOP
--Affectation des valeurs pour regrouper les tests.
varNOTEST :=
CASE
WHEN r.NOTEST = 'KCAS' THEN 'KCAS'
WHEN r.NOTEST = 'MBCAS' THEN 'MBCAS'
WHEN r.NOTEST IN ('MSHGC', 'SHGC') THEN 'SHGC'
WHEN r.NOTEST IN ('MMTCP', 'MMTP', 'MMH3', 'HMTP', 'HMH3', 'HMTCP') THEN 'MTP'
END CASE;
CASE
--Cas 'SHGC'
WHEN (r.NOTEST = 'MSHGC' OR r.NOTEST = 'shgc') AND r.TYPTEST= 'H' THEN
varRESULTEST :=
CASE
WHEN r.RESULTEST = '0' THEN 'NP'
WHEN r.RESULTEST = '0' THEN 'NP'
WHEN r.RESULTEST = '0' THEN 'NP'
ELSE '??'
END CASE;
ELSE
--Cas 'MTP'
IF (Nb_MTF = 0) THEN
varRESULTEST :=
CASE
WHEN r.NOTEST='MMTCP' AND r.RESULTEST='MTF' THEN 'NP'
WHEN r.NOTEST='MMTCP' AND r.RESULTEST='MTC' THEN 'Porteur'
WHEN r.NOTEST='MMTP' AND r.RESULTEST='MTPF' THEN 'NP'
WHEN r.NOTEST='MMTP' AND r.RESULTEST='MTPC' OR r.RESULTEST='MTP' THEN 'NP'
WHEN r.NOTEST='MMH3' AND r.RESULTEST='MH3F' THEN 'NP'
WHEN r.NOTEST='MMH3' AND r.RESULTEST='MH3C' OR r.RESULTEST='MH3S' THEN 'NP'
WHEN r.NOTEST='HMTCP' AND r.RESULTEST='0' THEN 'NP'
WHEN r.NOTEST='HMTCP' AND r.RESULTEST='1' OR r.RESULTEST='2' THEN 'Porteur'
ELSE NULL
END CASE;
IF (varRESULT IS NOT NULL) THEN
Nb_MTF := Nb_MTF + 1;
END IF;
END IF;
END CASE;
END;
IF varRESULTEST IS NOT NULL
THEN varRESULTEST := varNOTEST || ':' || varRESULTEST || ';';
ELSE varRESULTEST := varNOTEST || ':' || r.RESULTEST || ';';
END IF;
chainefinale := chainefinale || varRESULTEST;
END LOOP;
dbms_output.put_line(chainefinale);
END;
END; |
Partager