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 :

Insérer une ligne de données dans une table à partir de plpgsql [9.2]


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Points : 3
    Points
    3
    Par défaut Insérer une ligne de données dans une table à partir de plpgsql
    Bonjour,
    J'ai un souci en ce qui concerne l'insertion des données dans une table "adresse" à partir de plpgsql. En écrivant ce code et lorsque je l'exécute on me dit que tout est correct met aucune mise à jour effectué...Alors je supprime les déclarations de paramètres et les remplace par des valeurs dans le corps. Et losrque je consulte ma table"adresse" je ne vois pas d'ajout d'une nouvelle ligne.Aidez moi svp..
    Voici mon code en espérant avoir une réponse.Respectueusement

    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
    CREATE TABLE ADRESSE ( CODADR integer NOT NULL , LIBADR character varying NOT NULL );
     
    CREATE OR REPLACE FUNCTION sp_ajouteradresse(pCODADR IN integer ,pLIBADR IN character varying)
      RETURNS void AS
    $BODY$
    begin
    INSERT INTO adresse(codcli,nomcli) VALUES (pCODADR, pLIBADR);
    commit;
    return;
     
    end;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    ALTER FUNCTION sp_ajouteradresse()
      OWNER TO postgres;
    a l'exécution voici le message:
    La requête a été exécutée avec succès en 41 ms, mais ne renvoie aucun résultat.

    Comment faire pour que ma requête renvoie un résultat svp ?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 955
    Points
    52 955
    Billets dans le blog
    6
    Par défaut
    PostGreSQL ne sait pas gérer des transaction dans les routines,k car les routines sont exclusivement des fonctions atomiques et non des procédures avec du transactionnement possible. C'est une des limitations de PG. Donc pas d'ordre BGAINWORK, COMMIT ou ROLLBACK.

    Voici votre code rectifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE ADRESSE ( CODADR integer NOT NULL , LIBADR character varying NOT NULL );
     
    CREATE FUNCTION sp_ajouteradresse(pCODADR IN integer, 
                                      pLIBADR IN character varying)
       RETURNS void AS
    $BODY$
       INSERT INTO adresse(CODADR, LIBADR) 
                   VALUES ($1,     $2);
    $BODY$
       LANGUAGE SQL VOLATILE;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sp_ajouteradresse(123, 'rue des blancs manteaux');
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    En écrivant ce code et lorsque je l'exécute on me dit que tout est correct
    Non. Quand on met un COMMIT à l'intérieur d'une fonction ça produit une erreur de ce style:

    ERROR:  cannot begin/end transactions in PL/pgSQL
    HINT:  Use a BEGIN block with an EXCEPTION clause instead.
    
    qui ne peut pas raisonnablement se traduire par "Tout est correct".

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

Discussions similaires

  1. Collage spécial d'une ligne de données dans une autre feuille
    Par DEDENSAIT dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2013, 16h09
  2. inserer les données d'une base de données dans une autres?
    Par enstein8 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/10/2011, 13h33
  3. Réponses: 3
    Dernier message: 15/02/2011, 17h17
  4. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  5. selectionner une ligne au hasard dans une table
    Par dark_vidor dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/06/2005, 12h01

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