Salut les gars J'essaye d'automatiser un processus de partitionnement ici, et je deviens quelque chose d'étrange. Pourquoi ne pas le travail suivant?Partitions impaires en utilisant last_day
create table flp_aa (cdate date, value varchar2(255))
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64M
)
LOGGING
PARTITION BY RANGE (cdate)
(
PARTITION flp_aa_1010 VALUES LESS THAN (last_day(to_date('20101101', 'YYYYMMDD')))
NOLOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64M
NEXT 512K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
)
L'idée est d'utiliser last_day(to_date('20101101', 'YYYYMMDD'))
de sorte que chaque partition assez se termine le dernier jour de ce mois et tout le monde est heureux. Cependant, je reçois un ORA-14019 lorsque vous essayez d'exécuter ce code ...
[UPDATE]
Zut étrange:
Ce travail :
(...)
PARTITION flp_aa_1010 VALUES LESS THAN (to_date('20101101', 'YYYYMMDD'))
(...)
Cela ne travail:
(...)
PARTITION flp_aa_1010 VALUES LESS THAN (last_day(to_date('20101101', 'YYYYMMDD')))
(...)
Et ce pas encore ne fait:
(...)
PPARTITION flp_aa_1010 VALUES LESS THAN to_date(last_day(to_date('201010','YYYYMM'))))
(...)
Qu'est-ce que le canard? quelle classe ai-je manqué ici? La sortie de toutes ces fonctions n'est-elle pas la même?
Quelqu'un pourrait-il m'éclairer?
acclame
f.
bien .. pas tout à fait. J'avais déjà essayé ça. Cela ne semble pas être le cas. Vous voyez, le champ 'cdate' est de type date. si vous faites simplement '... VALUES MOINS QUE (to_date ('20101101', 'YYYYMMDD')) ...' ça marche! Pourtant, j'ai aussi essayé de convertir mon cdate en chaîne et d'utiliser le to_char et ça ne marcherait pas en plaçant le truc "last_day" ... bizarre ... – filippo
J'ai mis à jour ma réponse. TO_DATE ('20101101', 'YYYYMMDD') est considéré comme un littéral de date, alors que LAST_DAY (TO_DATE ('20101101', 'YYYYMMDD') ne l'est pas. –
J'ai compris :) merci! – filippo