Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 05/07/2013 14:46:19
- atchopba
- Membre
Problème INTO dans une procédure stockée
Bonjour,
j'ai crée une fonction qui est utilisée dans un trigger. J'ai bien déclarée des variables, mais il y a toujours un hic: un problème avec le INTO. J'ai comme l'impression qu'il ne veut pas de ma variable par la requête est pleine de JOIN.
----
CREATE OR REPLACE FUNCTION update_arcligne_update_arret_image_etiquette() RETURNS TRIGGER AS
$BODY$
DECLARE
idNoeud_arret INTEGER;
BEGIN
IF (TG_OP = 'UPDATE' OR TG_OP = 'INSERT') THEN
SELECT id_arret INTO idArret FROM
SELECT rtna.id_noeud_arret INTO idNoeud_arret, rtna.nom, l.id_ligne, l.numero
FROM res_arret rtna
JOIN res_no n ON n.id_noeud = rtna.id_noeud_arret
JOIN arc arc ON arc.id_amont = n.id_noeud OR arc.id_aval = n.id_noeud
JOIN res_ligne rtal ON rtal.id_arc = arc.id_arc
JOIN ligne l ON l.id_ligne = rtal.id_ligne
ORDER BY rtna.id_noeud_arret;
WHERE id_ligne = NEW.id_ligne AND id_arc = idArc;
----
Et l'erreur est la suivante :
ERREUR: « idnoeud_arret » n'est pas une variable connue
LINE 21: SELECT id_noeud_arret INTO idNoeud_arret FROM
Merci de me venir en aide.
Hors ligne
#2 06/07/2013 00:44:22
- gleu
- Administrateur
Re : Problème INTO dans une procédure stockée
Ce code est syntaxiquement incorrect. Il y a une variable idArret non déclaré sur le premier SELECT. Sur le deuxième, le SELECT devrait récupérer quatre colonnes mais il n'en récupère qu'une , ce qui ne fonctionnera pas. Bref, corrigez un peu ça pour commencer.
Guillaume.
Hors ligne
#3 08/07/2013 09:04:31
- atchopba
- Membre
Re : Problème INTO dans une procédure stockée
Je m'excuse de n'avoir pas tout vérifier quand j'ai fait mon post sur le forum. La requête est ci-bas. Donc d'après ce que tu as dit, si j'ai probablement bien compris, c'est qu'il faut que je mette des INTO sur toutes les colonnes ?
----
CREATE OR REPLACE FUNCTION update_arcligne_update_arret_image_etiquette() RETURNS TRIGGER AS
$BODY$
DECLARE
idNoeud_arret INTEGER;
BEGIN
IF (TG_OP = 'UPDATE' OR TG_OP = 'INSERT') THEN
SELECT rtna.id_noeud_arret INTO idNoeud_arret, rtna.nom, l.id_ligne, l.numero
FROM res_arret rtna
JOIN res_no n ON n.id_noeud = rtna.id_noeud_arret
JOIN arc arc ON arc.id_amont = n.id_noeud OR arc.id_aval = n.id_noeud
JOIN res_ligne rtal ON rtal.id_arc = arc.id_arc
JOIN ligne l ON l.id_ligne = rtal.id_ligne
ORDER BY rtna.id_noeud_arret;
WHERE id_ligne = NEW.id_ligne AND id_arc = idArc;
----
Merci bien !
Hors ligne
#4 09/07/2013 00:35:19
- gleu
- Administrateur
Re : Problème INTO dans une procédure stockée
Il faudrait plutôt quelque chose comme
SELECT INTO noeud rtna.id_noeud_arret, rtna.nom, l.id_ligne, l.numero
avec noeud défini comme un record.
Guillaume.
Hors ligne
#5 09/07/2013 08:48:52
- atchopba
- Membre
Re : Problème INTO dans une procédure stockée
ça a marché. Je te remercie bien infiniment bien pour ton aide.
Merci !
Hors ligne
Pages : 1