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

  1. #1
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 816
    Points : 10 806
    Points
    10 806

    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

    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    7 775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata

    Informations forums :
    Inscription : septembre 2008
    Messages : 7 775
    Points : 15 316
    Points
    15 316

    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 & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 816
    Points : 10 806
    Points
    10 806

    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

    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    7 775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata

    Informations forums :
    Inscription : septembre 2008
    Messages : 7 775
    Points : 15 316
    Points
    15 316

    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