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.

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);
2) Je parcours chaque schema

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);
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
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