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 :

[plpgsql] transaction dans les fonctions ?


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    Points : 12
    Points
    12
    Par défaut [plpgsql] transaction dans les fonctions ?
    bonjour ,

    j'aimerai savoir si il possible d'utiliser les transactions dans notre propre fonction postgresql ?
    Car lorsque je l'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE FUNCTION my_test(character varying, integer, character varying, integer, character varying, character varying, character varying, character varying) RETURNS integer AS '
    DECLARE
    var_code_famille integer;
    BEGIN
     BEGIN WORK;
     var_code_famille := SELECT nextval(''seq_code_famille'');
     INSERT INTO TBL_FAMILLE VALUES(var_code_famille, $1, $2, $3, $4, $5, $6, $7, $8);
     [.... autre insert]
     COMMIT WORK;
     RETURN var_code_famille;
    END;
    ' LANGUAGE plpgsql;
    j'ai l'erreur suivante :
    ERROR: syntax error at or near ""
    Merci
    A+

  2. #2
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 318
    Points
    318
    Par défaut
    Salut,

    Avec quoi l'executes-tu ? dans le shell ? dans un requeteur ? sous Windows ? sous linux ? via ODBC ?

    @+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Salut !

    Mes fonctions je les tappe sous PhpPgAdmin.
    Parcontre, je les appel en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = "SELECT my_test(var1, var2, ....)"
    $result = pg_query($result, $sql);
     
    if (!$result)
    die (pg_last_error($db);
    et j'obtiens :
    ERROR: syntax error at or near ""
    Et des que je n'utilise pas les transactions => j'ai plus d'erreur....
    Alors docteur ?

    merci,
    a+



  4. #4
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    pas sur, mais de memoire, tu ne peux pas mettre une transaction dans un procedure. il me semble que la procedure est elle meme une transaction , ce qui reviendrait a faire des transactions imbriquees...

    A verifier, mais je n ai pas trouve de transactions dans des procedures.

    ++

Discussions similaires

  1. [FLASH 8] Ciblage dans les fonctions
    Par abenhass dans le forum Flash
    Réponses: 2
    Dernier message: 14/12/2005, 14h00
  2. Transaction dans une fonction
    Par etiennegaloup dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 01/11/2005, 16h44
  3. "_" dans les fonctions
    Par reggae dans le forum C
    Réponses: 3
    Dernier message: 30/09/2005, 19h08
  4. [transaction dans une fonction]
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/08/2005, 21h33
  5. Réponses: 2
    Dernier message: 07/10/2004, 17h00

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