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

PostgreSQL Discussion :

fonction pour plusieurs paramètres


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut fonction pour plusieurs paramètres
    Bonjour à tous

    Je voudrais ecrire une fonction qui contrôlle la dependance dans champ parraport à un autre.
    Le champ principal est du type "boolean" et le champ dependant est du type "int" ou "character varying". Si le champ principal a la Valeur "true", le champ dependant devarait avoir une valeur. Dans le cas ou le champ principal a la valeur "false", il peut être inscrit dans le champ dependant une valeur ou pas.
    Voilà la fonction que j´ai ecrite:

    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
    CREATE OR REPLACE FUNCTION ikt_status_check2(BOOLEAN, ikt_int_bit15)
      RETURNS BOOLEAN AS
    $BODY$
    DECLARE 
     
    b character varying;
    BEGIN 
     
    IF($1=true) 
    THEN SELECT $2 INTO b FROM structure WHERE $1 = true;
    END IF;
    IF(length(b) = 0)
    THEN Raise Exception '|STATUS_NOT_RESPECTED|The field % has to have a value ',$2;
    END IF;
     
    RETURN true;
    END;
     
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE
      COST 100;
    ALTER FUNCTION ikt_status_check2(BOOLEAN, ikt_int_bit15) OWNER TO postgres;
    je fais appel à la fonction à l´aide d´un "constraint", il se presente ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE structure
      ADD CONSTRAINT ikt_status_check2 CHECK (ikt_status_check2(jump_to_index_status, jump_to_index));
    Quand je fais un insert dans ma table et attribue au champ "jump_to_index_status" la valeur true, je devrais normalement recevoir une erreur, cela ne se produit pas et la valeur est tout simplement inscrite dans la table.

    Es que l´un d´entre vous saurait peut être l´erreur que je commet dans ma fonction.

    Merci d´avance.

    Yannick

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour ,
    essaie sur la doc on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF NOT FOUND THEN
        RAISE EXCEPTION ...
    je ne comprends pas le deuxieme parametre de la fonction,
    pourquoi ne pas l'enlever et le declarer dans la fonction?

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut
    Salut Xavier-Pierre,

    merci déjà pour ta reaction, en utilisant les deux expréssions, je n´ai toujours mahlheureusement pas le resultat attendue avec ma fonction.
    J´essaie de provoquer avec un insert sur une table, le message d´erreur de la fonction, mais la valeur est tout simplement inscrite dans la table, ce qui ne devrait pas se produire.

    Mon code actuel se presente ainsi.
    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
    -- Function: ikt_status_check2(boolean)
     
    -- DROP FUNCTION ikt_status_check2(boolean);
     
    CREATE OR REPLACE FUNCTION ikt_status_check2(boolean)
      RETURNS boolean AS
    $BODY$
    DECLARE 
    jump_to_index character varying;
    b character varying;
    BEGIN 
     
    IF($1=true) 
    THEN SELECT jump_to_index into b from structure ;
     
    IF NOT FOUND
    THEN Raise Exception '|STATUS_NOT_RESPECTED|The field % has to have a value ',jump_to_index;
    END IF;
    END IF;
     
    RETURN true;
    END;
     
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE
      COST 100;
    ALTER FUNCTION ikt_status_check2(boolean) OWNER TO postgres;
    Merci d´avance pour vos reactions.

    Yannick

Discussions similaires

  1. Appel d'une fonction avec plusieurs paramètres
    Par kazarn dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/06/2009, 18h55
  2. créer une fonction avec plusieurs paramètres
    Par SHERPAE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/01/2009, 17h41
  3. Aide pour déclarer fonction avec plusieurs paramètres de sortie
    Par tonioj41 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/01/2008, 11h06
  4. [Système] Fonction avec plusieurs paramètres optionnels
    Par cerede2000 dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2007, 14h36
  5. [VBA-Excel] appelle fonction ayant plusieurs paramètres
    Par thierryyyyyyy dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 26/02/2007, 17h01

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