Bonjour,

Je suis confronté à un problème que je ne comprends pas !!
J'aimerais utiliser ce bout de script dans certaines procédures, mais ça me retourne une erreur étrange ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE
 
V_SUB VARCHAR2(32) := 'P2008_AVRIL';
 
BEGIN
 
    SYS.DBMS_STATS.GATHER_TABLE_STATS 
        (
                OwnName             => 'MON_OWNER'
            ,   TabName             => 'MA_TABLE'
            ,   PartName            => V_SUB
            ,   Granularity         => 'SUBPARTITION'
            ,   Estimate_Percent    => 30
            ,   Degree              => 4
            ,   Cascade             => TRUE
            ,   No_Invalidate       => FALSE
        );
 
END;
/

Le script ci-dessus fonctionne parfaitement, mais si je remplace :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
V_SUB VARCHAR2(32) := 'P2008_AVRIL';
par ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
V_DATE DATE := '27/04/2008';
V_SUB VARCHAR2(32) := TO_CHAR('P' || TO_CHAR(V_DATE, 'YYYY') || '_' || TO_CHAR(V_DATE, 'MONTH'));
Alors je me retrouve avec cette erreur :

Error at line 4
ORA-20000: P2008_AVRIL invalid partition name
ORA-06512: à "SYS.DBMS_STATS", ligne 17806
ORA-06512: à "SYS.DBMS_STATS", ligne 17827
ORA-06512: à ligne 7
Or, la sous partition P2008_AVRIL existe bien sur ma table !

Quelqu'un a-t-il déjà rencontré ce problème ou quelqu'un a-t-il une explication ?
Merci d'avance !