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 :

[10][pl/python] Return de valeur sur une clé composite


Sujet :

PostgreSQL

  1. #1
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut [10][pl/python] Return de valeur sur une clé composite
    Bonjour,

    J'ai créé le type suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TYPE proeco AS (
    	nom text,
    	prenom text,
    	matricule int4,
    	hash text);
    Ensuite je crée la fonction suivante :

    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
     
    DROP FUNCTION test();
    CREATE  FUNCTION test() RETURNS SETOF proeco AS $$
    rv = plpy.execute("SELECT nom,prenom,matricule,hash FROM users")
    d  = rv.nrows();
    if d > 1:
    	return rv[0:5]
     
    nom = "toto";
    prenom = "toto";
    matricule = 123;
    hash = "hash";
     
    return (nom,prenom,matricule,hash)
     
    $$ LANGUAGE plpythonu;
    Cela fonctionne sans souci, mais lorsque c'est vide, j'ai l"erreur suivante, pourtant il me semble être cohérent par rapport à la doc.

    voici le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Query execution failed
     
    Motif:
    SQL Error [22P02]: ERROR: malformed record literal: "toto"
      Détail : Missing left parenthesis.
      Où : while creating return value
    PL/Python function "test"
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    En général, dans les doubles quotes ce sont des noms de vues / tables / colonnes de la base de données
    Si ce sont des constantes qui vous intéressent, essayez les simples quotes qui sont des chaînes de caractères.

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    J'y ai pensé, mais j'ai la même erreur.

    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
     
    CREATE OR REPLACE FUNCTION test() RETURNS SETOF proeco AS $$
    rv = plpy.execute("SELECT nom,prenom,matricule,hash FROM users")
    d  = rv.nrows();
    if d > 1:
    	return rv[0:5]
     
    nom = 'toto';
    prenom = 'toto';
    matricule = 123;
    hash = 'hash';
     
    return (nom,prenom,matricule,hash)
     
    $$ LANGUAGE plpython3u;

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    Zut, peut-être les ; ?
    En python le saut de ligne suffit à marquer la fin d'une commande.

    Désolé je n'ai pas de pg sous la main donc...

Discussions similaires

  1. soustraire une valeur sur une date
    Par MBAYE BABACAR GUEYE dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/07/2008, 17h30
  2. Moyenne mensuelle de valeurs sur une année
    Par rudylar dans le forum Langage SQL
    Réponses: 14
    Dernier message: 12/07/2008, 22h35
  3. récupérer des valeurs sur une page web
    Par houwa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/07/2008, 15h27
  4. Réponses: 2
    Dernier message: 09/07/2008, 17h46
  5. [VBA-E] RechercheV si changement de valeur sur une cellule
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/01/2007, 17h22

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