Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/03/2011, 15h03   #1
Membre à l'essai
 
Avatar de Fiona08
 
Inscription : juillet 2008
Messages : 108
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 108
Points : 21
Points : 21
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 :
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
Fiona08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 15h50   #2
Membre à l'essai
 
Avatar de Fiona08
 
Inscription : juillet 2008
Messages : 108
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 108
Points : 21
Points : 21
Apres plusieurs essaies j'ai trouvé la faute.

Code :
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
Fiona08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 19h40   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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 :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h06.


 
 
 
 
Partenaires

Hébergement Web