Bonjour à tous,
j'ai une procédure qui s'exécute chaque fin de mois de la manière suivant :
depuis sysdate de chaque fin de mois j'obtient le num de jour et le mois et l'année
exemple :
pour 31/10/2018 je crée la table TABLE_31_10_2018
avec
mon code est à peu près le suivant :
1 2 3 4 5 6 7 8
| SELECT count(*)
INTO nb
FROM dba_objects
WHERE object_type = 'TABLE'
and owner = 'SYS'
and object_name = table_aaa;
// avec table_aaa := CONCAT(CONCAT(CONCAT('TABLE_', mois), '_'), year); |
si nb =0
1 2
| req := 'GRANT INSERT ON TABLE_'||jour||'_'||mois||'_'||year||' TO PUBLIC ';
EXECUTE IMMEDIATE (req) |
CREATE TABLE TABLE_'||jour||'_'||mois||'_'||year|| AS SELECT ... FROM TABLE_SOURCE WHERE ....
alors else
1 2
| req := 'GRANT ALL PRIVILEGES ON TABLE_'||jour||'_'||mois||'_'||year||' TO PUBLIC ';
EXECUTE IMMEDIATE (req) |
j'ai le code erreur suivant :
ORA-01929: pas de privilège pour GRANT
quand je change req par :
1 2
| req := 'GRANT INSERT ON TABLE_'||jour||'_'||mois||'_'||year||' TO PUBLIC ';
EXECUTE IMMEDIATE (req) |
1 2
| req := 'GRANT UPDATE ON TABLE_'||jour||'_'||mois||'_'||year||' TO PUBLIC ';
EXECUTE IMMEDIATE (req) |
j'ai le code erreur suivant :
ORA-01031: privilèges insuffisants
je vous signale que la partie suivante est :
INSERT INTO TABLE_'||jour||'_'||mois||'_'||year|| SELECT ... FROM TABLE_SOURCE WHERE ....
et
UPDATE TABLE_'||jour||'_'||mois||'_'||year|| SET VAL = .... , VAL2=.... WHERE ....
Partager