Bonjour à tous et à toutes,

J'essaie de créer un procédure qui permet le déplacement de la dernière partition d'un ensemble des tables d'un tablespace vers un autre tablespace.
la syntaxe est la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
alter table TTTT move partition LLLL tablespace YYYY;
La partition LLLL je l'ai remplacé par une requête qui me cherche la dernière partition de la table.

Le problème c'est que ma procédure ne marche pas , je ne sais pas pour quelle raison, pourriez vous me dire si la syntaxe de ma procédure est correcte ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
CREATE OR REPLACE PROCEDURE MOVE_PARTITIONS IS 
DECLARE
   r varchar2(15);
BEGIN
for r in (select TABLE_NAME from PARAMETRE_TABLESPACE where TABLESPACE_DATA_CIBLE='XXXX') loop
alter table r move partition (Select PARTITION_NAME From (Select PARTITION_POSITION,PARTITION_NAME, Max(PARTITION_POSITION) over (partition by TABLE_NAME) As MAX_P From SYS.USER_TAB_PARTITIONS Where TABLE_NAME='r' And Nvl(NUM_ROWS,0) = 0) Where PARTITION_POSITION = MAX_P) tablespace YYYY;
end loop;
NULL;
END MOVE_PARTITIONS;

Merci ^^