Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 07/02/2012, 11h40   #1
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
Par défaut Comprehension syntaxe d'une procédure

Bonjour tous
j'ai mis en place une procédure qui ne marche pas ! je ne sais pas ou se trouve l'erreur, voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SET TERM ^ ;
 
CREATE PROCEDURE FOTO
RETURNS(
  RESULTAT VARCHAR(500) CHARACTER SET ISO8859_1)
AS
DECLARE VARIABLE MONCODE VARCHAR(80);
DECLARE VARIABLE LAROUTE VARCHAR(200);
DECLARE VARIABLE LEFICHIER VARCHAR(100);
BEGIN
FOR
SELECT REPLACE(champ5,'/','-'), LECHEMINFICHIER(champ15) ,LENOMFICHIER(champ15)
FROM MESINFORMATIONS
WHERE champ15 CONTAINING '\'
INTO :moncode,:laroute, lefichier
DO
BEGIN
RESULTAT=:laroute||'\'||:moncode||''||'.jpg';
UPDATE MESINFORMATIONS
SET
champ15=:RESULTAT
WHERE CHAMP5=:moncode;
SUSPEND;
END
END^
 
SET TERM ; ^
A l’exécution pas de problème, mais après un select sur le table rien n'a changé.
A mon avis a chaque sélection de la boucle for il doit avoir une exécution d'update !

Code :
1
2
3
4
5
6
7
FOR
SELECT .....................................  //A chaque select
DO
BEGIN
UPDATE.......................................//On un update
END
END^
Merci pour vos éclairages.
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 11h51   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 700
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 700
Points : 844
Points : 844
Bonjour
As tu validé la transactions ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 12h18   #3
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
oui comitt transaction !
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 12h31   #4
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 700
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 700
Points : 844
Points : 844
Il n'y a pas de problème de syntaxe, mais de logique.

La variable "nom code" contient Champs5 MAIS dont les "/" sont remplacés par des "-"; donc la clause de sélection dans l'UPDATE
WHERE CHAMP5=:moncode; ne trouve évidemment rien

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
FOR 
   SELECT Champ5,
           Lecheminfichier(Champ15),
           Lenomfichier(Champ15)
      FROM Mesinformations
    WHERE Champ15 CONTAINING '\'
    INTO :Moncode,
         :Laroute,
         Lefichier
DO
BEGIN
    Resultat = :Laroute || '\' || REPLACE(:Moncode, '/', '-') || '' || '.jpg';
    UPDATE Mesinformations
    SET Champ15 = :Resultat
    WHERE Champ5 = :Moncode;
END
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 12h48   #5
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
je crois avoir trouver la valeur du champ5 change lors de la comparaison dans le Where du update,
donc il ne retrouve plus l'ancienne valeur.

Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT champ5, LECHEMINFICHIER(champ15) ,LENOMFICHIER(champ15)
FROM MESINFORMATIONS
WHERE champ15 CONTAINING '\'
INTO :moncode,:laroute, lefichier
DO
BEGIN
RESULTAT=:laroute||'/'||replace(:moncode,'/','-')||''||'.jpg';
UPDATE MESINFORMATIONS
SET
champ15=:RESULTAT
WHERE CHAMP5=:moncode;
Merci a tous
devalender 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 18h40.


 
 
 
 
Partenaires

Hébergement Web