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

Requêtes PostgreSQL Discussion :

manipulation de tableaux créés à partir d'alias de type


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut manipulation de tableaux créés à partir d'alias de type
    bonjour,
    je suis entrain de manipuler des alias de types, mais je rencontre une difficulté pour manipuler les tableaux créés à base de ces alias;
    j'ai fait copier/coller d'un exemple équivalent à la manipulation que
    j'essaie de faire, si quelqu'un pourrait m'indiquer ce que je ne fais pas
    bien dans la deuxième requêtes ci dessous cela me serait d'une grande aide,
    je vous remercie pour votre réaction.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /*************************
    THIS WORKS OK
    *************************/
    create table test_string_array (
    a int primary key,
    b varchar(10)[]
    );
     
    insert into test_string_array values (1,'{"(1.0,2.0)","(3.1,4.2)"}');
    select * from test_string_array
     
    /*************************
    THIS DOES NOT WORKS
    *************************/
     
    CREATE TYPE string_array AS (val varchar(10)[]) ;
     
    create table test_string_array_1 (
    a int primary key,
    b string_array
    );
     
    insert into test_string_array_1 values (1,'{"(1.0,2.0)","(3.1,4.2)"}');
     
    ERREUR: enregistrement litéral invalide : « {"(1.0,2.0)","(3.1,4.2)"} »
    LINE 1: insert into test_string_array_1 values (1,'{"(1.0,2.0)","(3....
    ^
    DETAIL: Parenthèse gauche manquante

  2. #2
    Membre Expert
    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
    Par défaut
    peut-être comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into test_string_array_1 values (1, '( "{(1.0,2.0),(3.1,4.2)}" )');
    mais je dois dire que ne suis pas certain de ce que tu veux mettre exactement dans le tableau de chaines.
    En version plus simple pour y mettre 2 chaines ab et cd:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into test_string_array_1 values (1, '( "{ab,cd}" )');

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut
    @estofolio:

    merci de votre réaction,
    la requête telle que vous l'écrivez passe effectivement mais ne me renvoie un résultat différent du resultat de la partie "THIS WORK" qui correspond à ce que je voudrais faire mais d'une autre façon à savoir: créer une table dont l'une des colonnes est un alias de type représentant un tableau de chaines de caractères quelconques.
    en fait c'est un test tout bête qui au cas où il réussit devrait m'aider à résoudre un autre problème.
    voilà: je crée un alias de type, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TYPE string_array AS (val varchar(10)[]) ;
    et j'utilise cette alias de type comme type de colonne de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE test_string_array_1 (
    a int PRIMARY KEY,
    b string_array
    );
    ceci devrait pouvoir marcher étant donné que ça marche si la colonne b de ma table est déclarée comme varchar(10)[] directement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO test_string_array_1 VALUES (1,'{"(1.0,2.0)","(3.1,4.2)"}');
    tout ce que je fais en fait (du moins je crois) c'est de donner un autre nom au type varchar(10)[]

    mon problème est peut être lié au fonctionnement du create type. peut être que les types ainsi créés par des alias sont automatiquement des "RECORD" indépendamment des types de bases

  4. #4
    Membre Expert
    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
    Par défaut
    Citation Envoyé par wildcat82 Voir le message
    tout ce que je fais en fait (du moins je crois) c'est de donner un autre nom au type varchar(10)[]

    mon problème est peut être lié au fonctionnement du create type. peut être que les types ainsi créés par des alias sont automatiquement des "RECORD" indépendamment des types de bases
    Effectivement il n'y a pas d'alias de type en postgresql. La commande CREATE TYPE AS (..) créé un type composite.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Par défaut
    merci @esfolio;
    voilà ce qui devrait m'aider à ne pas perdre du temps à chercher une solution qui n'existe pas, je pense que je vais me contenter d'utiliser mon type tel quel - sans passer par de alias - et de déclarer des colonnes de type array pour les tables qui en ont besoin.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/02/2007, 11h51
  2. manipulation de menus créés dynamiquement
    Par loukili81 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 18/07/2006, 11h26
  3. Manipulation de tableaux de tableaux
    Par vargasvan dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2006, 13h54
  4. Réponses: 6
    Dernier message: 01/03/2006, 14h55
  5. [Tableaux] Manipulation de tableaux
    Par orus8 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2005, 15h10

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