Comment puis-je créer un répertoire sur le système de fichiers?
Comment voulez-vous créer un répertoire physique sur le système d'exploitation depuis PL/SQL? J'ai regardé la CREATE OR REPLACE DIRECTORY
de commande, mais ne le font pas. Ni ne UTL_FILE
semblent capables.
Vous devez vous connecter pour publier un commentaire.
UTL_FILE
manque encore cette capacité - probablement un vestige de l'époque pré-DIRECTORY
objet jours où vous avez eu à définir de façon explicite les OS répertoires de fichiers, vous pouvez accéder à un paramètre de démarrage, donc il n'y a pas de nécessité de créer des répertoires de manière dynamique, de toute façon.Je pense que la meilleure façon de le faire est avec un Oracle Java procédure stockée qui utilise:
Si vous suivez cette voie, assurez-vous que vous utilisez
dbms_java.grant_permission
d'accorderjava.io.FilePermission
de l'utilisateur propriétaire de l'exécution du code.À la fin, j'ai trouvé une solution plus facile. Utilisation
ou tout simplement
Je crois que la seule façon de le faire est d'utiliser une procédure externe (C ou Java) et de l'appeler par le biais de PL/SQL. PL/SQL lui-même n'a pas les moyens de créer de la physique répertoire du système d'exploitation.
PL/SQL Conseils fournit un bon exemple de comment créer un C procédure externe qui exécute des commandes shell. Notez que je ne voudrais pas le considérer meilleures pratiques pour permettre ceci pour des raisons de sécurité.
Elle, vous pouvez créer le répertoire d'abord, puis vous pouvez utiliser le
create or replace directory myDir as '<path-to-dir>/myDir';
Notez que vous aurez besoin d'avoir CRÉER un RÉPERTOIRE QUELCONQUE privilège attribué à l'utilisateur qui exécute la commande. Après le répertoire est créé avec la commande ci-dessus, assurez-vous d'assigner des privilèges nécessaires à l'annuaire pour les autres utilisateurs.
Je viens de vérifier les nouveaux documents pour la base de données de la version 11.2, et il n'y a pas encore de routine que je peux trouver pour créer un répertoire. Donc, comme les autres participants, je vous recommande d'utiliser Java ou C de la routine.