Bonjour à tous,
Un développeur rencontre un problème très étrange...
Il crée une procédure avec l'utilisateur TOTO dans le shéma de TOTO.
Dans sa procédure il réalise des traitements, crée un directory, donne les droits à public (READ et WRITE), puis veux créer sa table externe tout ca en SQL dynamique (execute immediate). Pour information les ordres sont tous corrects !
Le problème rencontré se trouve au niveau du :
EXECUTE IMMEDIATE 'CREATE TABLE... ORGANIZATION EXTERNAL...'
Oracle lui retourne l'erreur droits insuffisant. De ce fait on a testé dans une fenêtre SQL*Plus hors de la procédure et le code marche, la table externe est créée et on y accède normalement.
Donc on retourne dans notre procédure, on regarde le propriétaire les droits etc... tous est correct, TOTO a sa procédure stockée dans son schéma, la table doit être crée dans son schéma avec les bons droits.
Du coup, je me suis dis tentons le AUTHID CURRENT_USER et là, ca marche...
Incompréhensible... TOTO lance une procédure qui lui appartient qui crée un objet dans son schéma et on est obligé de lui dire de le faire avec ses droits.
Est-ce un bug ?
Oracle 10g
Partager