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
| create or replace PROCEDURE PROMO_W (LISTE_MAG VARCHAR2) IS
nb_mag NUMBER(4);
vcode_mag NUMBER(4);
vliste_mag VARCHAR2(200);
vliste_mag2 VARCHAR2(200);
BEGIN
vliste_mag2 := translate(LISTE_MAG, 'A''', 'A');
DBMS_Output.Put_Line ('Magasins translate : '||vliste_mag2);
vliste_mag2:=','||vliste_mag2||',';
SELECT REGEXP_COUNT(vliste_mag2,',',1,'i')-1 INTO nb_mag FROM dual;
DBMS_Output.Put_Line ('Nb Magasins : '||nb_mag);
vliste_mag := null;
FOR i IN 1..nb_mag
LOOP
SELECT substr(vliste_mag2,1+instr (vliste_mag2,',',1,i),instr (vliste_mag2,',',1,i+1)- instr (vliste_mag2,',',1,i)-1) INTO vcode_mag FROM dual;
vliste_mag := vliste_mag||','||to_number(vcode_mag);
END LOOP;
vliste_mag := substr(vliste_mag,2);
DBMS_Output.Put_Line ('Magasins 2 : '||vliste_mag);
FOR mag in (select nommagasin from magasins where codemagasin in (vliste_mag))
LOOP
DBMS_Output.Put_Line ('Magasins : '||mag.nommagasin);
END LOOP;
END; |