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 23/08/2004, 16h39   #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 pb de procedure

bonjour a tous

voici ma ps et je n'arrive pas deceler l'erreur si quelqu'un peut
bien m'aider
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
 
CREATE PROCEDURE rechercheni(numics INTEGER, numnorme INTEGER)
RETURNS(reponse integer)
AS
DECLARE VARIABLE nummax INTEGER;
DECLARE VARIABLE nummin INTEGER;
 
BEGIN
 
SELECT valeur_min , valeur_max
FROM plage_numero
WHERE numero_ics = :numics
INTO
:nummax,
:nummin;
 
IF((nummax <= :numnorme)AND(:numnorme <= numin))
THEN
BEGIN
reponse=numnorme;
SUSPEND;
END
 
ELSE
BEGIN
EXCEPTION depassement;
END
voici l'erreur
Code :
1
2
3
4
 
Dynamic SQL Error
SQL error code = -206
COLUMN unknown
merci à tous
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2004, 08h58   #2
Membre confirmé
 
Avatar de TMuet
 
Homme Olivier Muet
Responsable de service informatique
Inscription : septembre 2003
Messages : 222
Détails du profil
Informations personnelles :
Nom : Homme Olivier Muet
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 222
Points : 254
Points : 254
Évidemment, ça n'est pas très simple comme ça

Ceci dit, s'il fallait parier, je dirais bien que valeur_min, valeur_max ou numero_ics n'appartiennent pas à la table plage_numero.

Amène voir la structure de cette table...
TMuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2004, 10h32   #3
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
je pense avoir trouver
Citation:
IF((nummax <= :numnorme)AND(:numnorme <= numin))
en effet numin n'était pas déclarer
merci beaucoup pour votre aide
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2004, 10h43   #4
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
en plus de ce pb qui a été resolu j'ai une table et sur cette -table j'ai deux trigger
1 pour l'insertion automatique d'id et l'autre pour effectuer une action sur la table dont voici le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
SET TERM ^;
 
CREATE TRIGGER codification FOR normes
active before INSERT position 1
AS
DECLARE VARIABLE rep integer;
 
BEGIN
execute procedure rechercheni new.numero_icsni,new.reference_norme
returning_values :rep;
UPDATE normes SET new.NVCODE_NI = new.origine_ni||""||:rep||":"||""||new.ANNEE_NORME;
 
END
^
 
SET TERM ;^
mon pb est que ce trigger marche à demie.
en effet le procedure s'execute sans pb mais pas le
Citation:
update normes set new.NVCODE_NI = new.origine_ni||""||:rep||":"||""||new.ANNEE_NORME;
je me suis dit peut etre que c'était a cause de la priorité d'execution des triggers. j'ai donc porter le second a:
Code :
1
2
 
active before INSERT position 1
mais l'insertion ne fonctionne toujours pas!
alors si vous avez une idée!
merci à tous
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2004, 11h45   #5
Membre confirmé
 
Avatar de TMuet
 
Homme Olivier Muet
Responsable de service informatique
Inscription : septembre 2003
Messages : 222
Détails du profil
Informations personnelles :
Nom : Homme Olivier Muet
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 222
Points : 254
Points : 254
Alors puisque j'ai perdu mon premier essai, je tente à nouveau ma chance

Le trigger before insert s'exécute avant l'insertion de la ligne dans la table 8)
Donc la commande update ne concerne pas ta nouvelle ligne.

Une remarque : il n'y a pas de clause where dans ton update. Est-ce normal (il va mettre à jour toute la table) ?
TMuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2004, 17h20   #6
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
pour reponse donc il faut un trigger after insert !
concernant le Update c'est bien marqué
Code :
1
2
 
UPDATE norme SET new.nvcode_ni ........
je pense qu'il n'y aura pas de pb!
j'essai donc avec le after insert et je t'informe
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2004, 10h18   #7
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
escuse moi pour ma lenteur à repondre j'avais des pb de santé.

j'ai enfin resolu le pb mais c'est quand meme sur un cout de chance en effet sur mon champ NVCODE_NI il ya avait une clause DEFAULT....
lorsque j'ai supprimer cette clause le trigger s'est remis a marcher sans pb :
ps je n'ai rien changer sur le code du trigger.
c'est quand meme bizard !
es a dire qu'on ne peut inserer a partir d'un trigger une donnée dans un champ qui contient une clause DEFAULT :
merci beaucoup pour ton soutient
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 12h52.


 
 
 
 
Partenaires

Hébergement Web