IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

créer un lien vers un repertoire en pl/sql


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut créer un lien vers un repertoire en pl/sql
    Voilà, j'aimerais savoir si c'est possible de créer un lien vers un repertoire
    comme on peut le faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create or replace directory testDir as 'c:\temp';
    J'aimerais faire cela mais dans une procédure pl/sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    create or replace procedure changeDirectory(p_chemin Varchar2)
    is
     
    begin
      create or replace directory BLOBDIR as p_chemin;
    end;
    /
    show errors
    j'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Erreurs pour PROCEDURE CHANGEDIRECTORY :
     
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    5/3      PLS-00103: Symbole "CREATE" rencontré à la place d'un des
             symboles suivants :
             begin case declare exit for goto if loop mod null pragma
             raise return select update while with <an identifier>
             <a double-quoted delimited-identifier> <a bind variable> <<
             close current delete fetch lock insert open rollback
             savepoint set sql execute commit forall merge
             <a single-quoted SQL string> pipe

  2. #2
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    salut,
    pour faire des opération DDL en PL/SQL tu dois le faire via du SQL dynamique.

    fais une recherche sur ce forum avec "SQL Dynamique" et tu trouveras ton bonheur.

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    En PL/SQL, les ordres du DDL doivent passer par le sql dynamique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execute immediate 'create directory ...' ;
    de plus, les droits sur ces objets doivent avoir été donné directement et non via un simple rôle.

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Procdeure créée sans erreur mais problème lors de l'execution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE OR REPLACE procedure changeDirectory(p_chemin Varchar2)
    IS
     
    begin
      execute immediate 'CREATE OR REPLACE directory BLOBDIR AS' || p_chemin;
    end;
    /
    SHOW errors
    Voici la procédure elle est bien créée par contre lorsque je l'execute j'ai une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec changedirectory('c:\temp\');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    BEGIN changedirectory('c:\temp\'); END;
     
    *
    ERREUR à la ligne 1 :
    ORA-00905: Mot-clé absent
    ORA-06512: à "SYSTEM.CHANGEDIRECTORY", ligne 5
    ORA-06512: à ligne 1

  5. #5
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    c'est une petit piège classique...

    ajout un espace après le AS (avant la fermeture que la quote) de l'ordre donnée dans le execute immediate... sinon le AS est collé avec ton paramètre

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut erreur trouvée merci de l'aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE OR REPLACE procedure changeDirectory(p_chemin Varchar2)
    IS
     
    begin
      EXECUTE IMMEDIATE 
      'CREATE OR REPLACE DIRECTORY BLOBDIR '||' AS '''||p_chemin||'''';
     
    end;
    /
    SHOW errors
    Cependant il faut avoir les drois d'administrateur pour exectuer cette procédure.
    En fait, il faut se connecter en system mais en tant que sysDBA.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ETAT]Créer des liens vers des entetes de groupes
    Par tonyice80 dans le forum IHM
    Réponses: 7
    Dernier message: 06/04/2007, 23h37
  2. [VBA Word] Créer un lien vers une zone d'un fichier Excel
    Par hirochirak dans le forum VBA Word
    Réponses: 7
    Dernier message: 19/12/2006, 12h26
  3. Comment créer un lien vers une url ?
    Par Teddy dans le forum Delphi
    Réponses: 5
    Dernier message: 28/11/2006, 18h43
  4. lien vers un repertoire local dans le poste de travail
    Par bambou dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/11/2006, 15h24
  5. Créer un lien vers un fichier existant
    Par Esarah dans le forum Langage
    Réponses: 4
    Dernier message: 13/11/2006, 22h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo