|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : juin 2006 Messages : 8 ![]() |
Quelqu'un peut-il m'expliquer où se situe mon erreur:
Ceci fonctionne: Code :
Code :
Code :
ERROR: could NOT find array type FOR DATA type typ_member_alldetails Une idée? Merci d'avance! |
||||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
je crois avoir vu dans la doc postgresql il n'y a pas longtemps que le SELECT INTO n'est pas supporté par la commande EXECUTE.
ce qui explique peut-être ton problème. bonne journée |
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
précision :
ta commande SELECT INTO ne te renverra que le dernier enregistrement récupéré par ta requête. Si tu veux tous les enregistrements retournés par ta requete, il faut boucler. |
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Inscription : juin 2006 Messages : 8 ![]() |
Citation:
Citation:
Je m'enfonce dans une impasse... En fait, pour "contourner" le problème rencontré et expliqué dans ce forum (sujet : Fonction: Retour d'un SET dynamique), j'ai trouvé une solution passant par une table temporaire et la déclaration d'un type. Cette solution fonctionne à merveille Je vais essayé de trouvé une solution pour contourner les problèmes rencontrés avec ma solution de contour Outils puissant mais avec quelques limites déplaisantes |
||
|
|
00
|
|
|
#5 | ||
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
Hello,
pourquoi un EXECUTE? un simple : Code :
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
||
|
|
00
|
|
|
#6 | |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 8 ![]() |
Si Spoutnik, cela fonctionne, mais comme je l'ai indiqué juste ici plus haut, cela ne fonctionne qu'une seule fois. Une fois la fonction exécutée, je dois la supprimer (drop) et la recréer pour que cela fonctionne à nouveau.
Voici ce que j'ai trouvé dans les FAQ sur postgresql.org: Citation:
|
|
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
et es-tu obligé de travailler sur une table temporaire?
|
|
|
00
|
|
|
#8 | |
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
Citation:
@n@kin.be, tu pourrais mettre le code de ta fonction qu'on comprenne à quoi sert la table temporaire?
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
|
|
|
00
|
|
|
#9 | ||||
|
Invité de passage
![]() Inscription : juin 2006 Messages : 8 ![]() |
Non, je ne suis pas obligé de travailler sur une table temporaire mais que cela soit une table temporaire ou non, le résultat est le même.
Voici la première version (sans EXECUTE): Code :
il me retourne un résultat correcte mais ensuite, il me retourne ceci: Code :
|
||||
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
en regardant viteuf, tu fais
Code :
SET component = (SELECT component FROM v_ef_details WHERE card_id = $1), |
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
je suis peut-être à côté de la plaque, mais pourquoi est-ce que tu ne fais pas des jointures plutôt que de travailler sur une table temporaire que tu mets à jour selon ce même principe?
|
|
|
00
|
|
|
#12 | ||
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
Ok, je comprend un peu mieux.
Déjà, ce que tu utilise n'est pas une table temporaire au sens SQL (qu'on me corrige si je me trompe surtout!). Tu as un mot clef (TEMP / TEMPORARY) à utiliser pour que ta table soit droppée automatiquement à la fin de la session. La séquence CREATE table + insert pourrait peut déjà être remplacée par ou bien par l'utilisation d'un type record. "member_info" sert à quoi? Code :
A mois que tu ai un besoin précis de redéfinir les types de tes colonnes ( de t_tmp_member +1 pour le 'component' qui existe pas, j'avais po vu
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
||
|
|
00
|
|
|
#13 | ||
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
c'était en effet l'idée que je me faisais de la solution, sauf que tu as fait un petit mic mac dans les tables/vues
la requête devant être (je crois) : Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
|
|
00
|
|
|
#15 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
pas grave |
|
|
00
|
|
|
#16 | ||
|
Invité de passage
![]() Inscription : juin 2006 Messages : 8 ![]() |
Merci encore à Gerald et à Spoutnik pour leur intérêt à résoudre mon problème.
L'idée est bonne est les "JOIN" mais cela ne peut fonctionner car un membre est soit EF (effectif), AD (adhérent) ou AG (agréé). Si j'écris ma fonction avec les joins pour membres, ef, ad et ag, la requête ne me retourne rien. C'est la raison pour laquelle j'avais pensé à un insert suivit d'un update (pour le component, c'est juste une erreur de copier/coller Au départ, ce que j'avais fais était plus simple Code :
On est lundi, on est motivé alors on va continuer à chercher Une solution par le front-end reste possible mais je préfère éviter, j'utiliserai cette solution en dernier recourd. |
||
|
|
00
|
|
|
#17 |
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
|
|
00
|
|
|
#18 | ||
|
Invité de passage
![]() Inscription : juin 2006 Messages : 8 ![]() |
Ok Spoutnik, je jetterai un oeil sur les types polymorphiques!
Mais en attendant, en postant ma dernière réponse, une idée m'a traversé l'esprit (ça fait mal!) et j'ai alors décidé de combiné ma première solution avec vos idées (merci encore). Voici en gros ce que cela donne: Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com