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

Requêtes PostgreSQL Discussion :

Fonction SQL passage en paramètre de NEW et OLD


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut Fonction SQL passage en paramètre de NEW et OLD
    Bonjour,

    Je vien vers vous car je me trouve dans une impasse.
    Je suis sur la réalisation d'une fonction SQL qui me permet une historisation des differentes modifications sur mes vues.
    Mon problème réside dans mon incapacité à faire passer NEW et OLD dans cette fonction.

    ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    CREATE FUNCTION historisation (NEW, OLD, nom_vue varchar, 
    				utilisateur varchar, id_utilisateur integer, 
    				type_modif integer, id_ligne integer) RETURNS void AS $$
    $BODY$
    -- comme vous pouvez le voir je ne déclare pas correctement NEW et OLD
    -- je ne sais quel format je doit leur attribuer.
    	DECLARE
    		knew TEXT;
    		kold TEXT;
    		vnew TEXT;
    		vold TEXT;
    		vgroupenew TEXT;
    		vgroupeold TEXT;
    		colonne TEXT;
    	BEGIN 
    --initialisation de mes variables a vide au lieu de NULL
     
    		vgroupeold = coalesce(vgroupeold, ''); 
    		vgroupenew = coalesce(vgroupenew, ''); 
    		colonne = coalesce(colonne, ''); 
     
    --double boucle afin de balayer mes deux listes, même si la solution la plus efficace
    --aurais été d'incrémenter simultanément les index des deux listes 
     
    		FOR knew,vnew IN select key,value from each(hstore(NEW)) LOOP
    			FOR kold,vold IN select key,value from each(hstore(OLD)) LOOP
    				IF((knew = kold) AND (vnew <> vold))then
    					vgroupeold = vold || '/' || vgroupeold;
    					vgroupenew = vnew || '/' || vgroupenew;
    					colonne = kold || '/' || colonne;
    				end if;
    			END LOOP;
    		END LOOP;
     
    -- mon insert dans ma table de mofication
    		INSERT INTO historisation(
    			    anciennevaleur, nouvellevaleur, vue, colonnemodifier, modificateur, 
    			    idmodificateur, typemodif, idmodifie)
    		VALUES (vgroupeold, vgroupenew, nom_vue, colonne, utilisateur,
    			id_utilisateur , type_modif, id_ligne);
     
    	END
    $BODY$
     
    $$ LANGUAGE SQL;

  2. #2
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Bon j'ai trouvé un moyen de solutionner mon problème.

    Les variable NEW et OLD etant des record ne peuvent etres passer en parametre pour une fonction sql.
    cela dit j'ai trouvé un module (Hstore) qui permet la conversion de ces records en liste.
    j'en ai donc profité pour faire passer la liste dans ma fonction!

    =) et voilou.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/07/2010, 00h52
  2. probleme fonctions c++ -- passage de paramètres
    Par anissben dans le forum C++
    Réponses: 18
    Dernier message: 03/05/2010, 15h10
  3. Fonction et passage de paramètres
    Par methodman225 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/06/2009, 13h29
  4. ActionScript : fonction et passages de paramètres
    Par gcvoiron dans le forum Flash
    Réponses: 6
    Dernier message: 12/06/2007, 13h52
  5. [PL/SQL] : Passage de paramètres à une fonction
    Par dcollart dans le forum Oracle
    Réponses: 5
    Dernier message: 13/07/2006, 10h17

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