Bonjour a tous,
Voici mon code:
1) Je recupere la liste des schemas que je veux parcourir par la suite (premier curseur) depuis la table SCHEMA_MAP. Chaque schema a une liste de REF_TITI correspondantes (je recupere les REF_TITI dans SCHEMA_MAP qui remplissent les criteres du deuxieme select depuis la table GG_PARAMETERS). Je declare un deuxieme curseur C_ITEMS pour la suite.
2) Je parcours chaque schema
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 DECLARE CURSOR C_TARGET_SCHEMA IS select TARGET_SCHEMA,REF_TITI from SCHEMA_MAP where CODE is NULL and REF_TITI in (select REF_TITI from GG_PARAMETERS where CONF is not NULL) order by TARGET_SCHEMA; C_ITEMS sys_refcursor; ITEMS_NUMBER NUMBER(5);
3) Pour chaque schema, je fais cette commande (je vais compter dans la table CHANGE de ce schema les elements qui m'interressent)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 BEGIN dbms_output.enable(600000); -- For each schema FOR SCHEMA IN C_TARGET_SCHEMA LOOP EXECUTE IMMEDIATE('ALTER SESSION SET CURRENT_SCHEMA=SESSION_' || SCHEMA.TARGET_SCHEMA);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 OPEN C_ITEMS FOR 'select COUNT(*) from CHANGE where MODE=''ASC'' and (TRUNC(RECEPTION_DATE) > (CURRENT_DATE - 2) and TRUNC(RECEPTION_DATE) < (CURRENT_DATE - 1))'; FETCH C_ITEMS INTO ITEMS_NUMBER; CLOSE C_ITEMS; END LOOP; END; / quit
Ce que j'aimerais faire, c'est classer les resultats de ma commande 3) par REF_TITI, ie dire dans tel schema, j'ai compte tant de trucs pour la premiere REF_TITI, tant de trucs pour la deuxieme...
Je sais pas si c'est tres clair, demandez-moi plus de precisions si besoin.
Merci
Partager