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 :

[DEBUTANT] Pb insertion tables


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut [DEBUTANT] Pb insertion tables
    Bonjour,

    J'essai de faire une procedure d'insertion dans une table générique en faisant passer dans une fonction le nom de la table mais je me heurte a une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    CREATE OR REPLACE FUNCTION initenv(nametable varchar)
    AS $$
    BEGIN
     
        INSERT INTO UserProfil VALUES (1, nametable , true, false, false);
        INSERT INTO nametable VALUES (1, 'XXX', true, false, false);
     
    END;
    $$ LANGUAGE 'plpgsql';
    La ligne 1 marche mais lorsque que je rajoute la ligne 2 ca coince.
    Je me retrouve avec l'erreur suivante:


    ERROR: syntax error at or near "$1"
    État SQL :42601
    Contexte : SQL statement in PL/PgSQL function "initenv" near line xxx


    Comment puis-je contourner ce problème? merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Par défaut
    PostgreSQL n'a aucun moyen de savoir si tu parles d'une table ou d'une variable qui référence une table. Tu dois donc construire une chaîne qui sera ta requête et que tu exécuteras via l'instruction PL/pgsql PERFORM. Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PERFORM 'INSERT INTO '||nametable||' VALUES (1, ''XXX'', true, false, false)';
    Remarque que j'ai doublé les guillemets autour de XXX (ce n'est donc pas un guillement double, mais deux guillemets simples).

    Pour plus d'infos sur PERFORM et son copain EXECUTE, http://www.postgresql.org/docs/8.2/s...tatements.html .

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut
    Ok parfait!

    je te remercie une nouvelle fois.

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

Discussions similaires

  1. Probleme simple de debutant avec INSERT TO et UPDATE
    Par Tom_Cruise dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 08h15
  2. [Debutant] Lister les tables d'une base de données
    Par Konrad Florczak dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/07/2005, 16h24
  3. HELP creation et insertion table....??
    Par aqwel18 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/12/2004, 15h50
  4. [debutant] select-insert sur tables de bases differentes
    Par RedMax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/10/2004, 18h59
  5. [debutant]Sauver une table dans un fichier
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/04/2004, 10h34

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