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 :

Aide pour une faute dans commande Sql dynamique dans un PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 55
    Points
    55
    Par défaut Aide pour une faute dans commande Sql dynamique dans un PL/SQL
    Salut à tous,

    J’ai la commande suivante qui me genere une faute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CURSOR cur_cur is select emp.*
                          from Tb_Employee emp
                          where emp.Anneembauche = '2011';
     
    sql_text :=  'UPDATE Tb_Employee emp
    SET emp.lienFichier = \\MesFichiers\sauvegarde\DocumentWord\'''||substr(to_char (DateEmbauche, 'DDMMYYYY'),5,4)||'\'''''|| substr(to_char (DateEmbauche, 'DDMMYYYY'), 3,2)||'\'''''||substr(to_char (DateEmbauche, 'DDMMYYYY'),1,2)''Fichier.doc'';
     
    sql_text :=  'UPDATE Tb_Employee emp 
    SET emp.lienFichier = ''\\MesFichiers\sauvegarde\DocumentWord\''' || substr(to_char(cur_rec.DateEmbauche, 'DDMMYYYY'), 5,4) || ''||'\'||'' || substr(to_char (cur_rec.DateEmbauche, 'DDMMYYYY'), 3,2) || ''||'\'||''||substr(to_char (cur_rec.DateEmbauche, 'DDMMYYYY'), 1,2)||
    ''||'\'||''''||cur_rec.NomduFichier||'''';
    je voudrais a la fin avoir dans ma table employee un lien du genre: \\MesFichiers\sauvegarde\DocumentWord\2011\03\08\NomduFichier.doc

    Mais malheureusement j’obtiens la faute suivante: ORA-00933: SQL command not properly ended; lorsque j'essaye d'exécuter mon code PL/SQL

    Pardon quelqu'un peut-il me dire où ca plante?

    Merci d'avance
    Fiona

  2. #2
    Membre du Club Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 55
    Points
    55
    Par défaut
    Apres plusieurs essaies j'ai trouvé la faute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sql_text :=  'UPDATE Tb_Employee emp 
    SET emp.lienFichier = ''\\MesFichiers\sauvegarde\DocumentWord\' || substr(to_char(cur_rec.DateEmbauche, 'DDMMYYYY'), 5,4) || ''||'\'||'' || substr(to_char (cur_rec.DateEmbauche, 'DDMMYYYY'), 3,2) || ''||'\'||''||substr(to_char (cur_rec.DateEmbauche, 'DDMMYYYY'), 1,2)||
    ''||'\'||''''||cur_rec.NomduFichier||'''';
    Bye
    fiona

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Par contre il vous reste un problème de compréhension des fonctions TO_CHAR et || :
    pour la première vous convertissez toute la date sur une chaîne pour n'en prendre qu'une partie
    pour la seconde vous écrivez beaucoup de valeur en deux ou trois concaténations alors que ce n'est pas nécessaire.

    Votre long code à la mode SQL afin que ce soit exécutable, j'ai utilisé sysdate pour votre date et la constante 'nom_fichier' pour le nom du fichier.
    Les commentaires en fin de lignes sont présents pour la mise en page sur le forum :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT '\\MesFichiers\sauvegarde\DocumentWord\' ||                     --'
                 substr(to_char(sysdate, 'DDMMYYYY'), 5,4) || '' || '\' || --'
           '' || substr(to_char(sysdate, 'DDMMYYYY'), 3,2) || '' || '\' || --'
           '' || substr(to_char(sysdate, 'DDMMYYYY'), 1,2) || '' || '\' || --'
           '' ||'NomduFichier' AS chemin
      FROM dual;
     
    CHEMIN                                                       
    -------------------------------------------------------------
    \\MesFichiers\sauvegarde\DocumentWord\2011\03\14\NomduFichier
    Alors qu'au final vous pouvez juste n'écrire que :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select '\\MesFichiers\sauvegarde\DocumentWord\' || --'
           to_char(sysdate, 'yyyy"\"mm"\"dd"\"') || 'NomduFichier'||'' as chemin
      from dual;
     
    CHEMIN                                                       
    -------------------------------------------------------------
    \\MesFichiers\sauvegarde\DocumentWord\2011\03\14\NomduFichier

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

Discussions similaires

  1. Aide pour une commande dynamique
    Par guiblan dans le forum Langage
    Réponses: 1
    Dernier message: 28/08/2009, 04h28
  2. SQL dynamique dans une procédure stockée
    Par Amnesiak dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/07/2005, 15h17
  3. Aide pour une requete SQL
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/01/2005, 15h01
  4. Aide pour une requete SQL
    Par hpghost dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 08/01/2005, 10h15
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56

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