PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » Problème très étrange avec une fonction » 30/05/2012 14:41:59

Bonjour,
J'ai exécuté :

select proargnames[2],proargmodes[2]
from pg_proc
where proname ilike 'mafonction'

comme vous me l'avez conseillé et ça fonctionne dans le cas que j'ai créé ma méthode avec RETURNS TABLE() : le nom de mon paramètre ainsi que le type 't' s'affichent sans problème !

Par contre, ces deux champs sont vides si j'exécute ce select sur la fonction que j'ai créée avec RETURNS SETOF bigint.


Ma version de pgAdmin est 1.12.2

Merci !

#2 Re : Général » Problème très étrange avec une fonction » 29/05/2012 21:33:25

Bonjour,

J'ai déjà rencontré le même problème mais en utilisant une avenue différente. Je m'explique :

Je désire créer une fonction qui me retourne un seul nombre, soit le nombre de participants. J'ai déclaré ma fonction de la manière suivante :

CREATE OR REPLACE FUNCTION maFonction(intSondageid integer)
  [b]RETURNS SETOF bigint AS [b]
$BODY$
                 SELECT COUNT(intId) AS nombreParticipants FROM Participant
	WHERE intSondageId = $
1$BODY$

Quand j'appelle ensuite ma fonction par select * from maFonction(2), il me retourne le résultat avec le nom de ma fonction, ce qu'il ne faut pas...

J'ai tenté de créer ma fonction avec plutôt l'entête suivante :

CREATE OR REPLACE FUNCTION maFonction(intSondageid integer)
  RETURNS TABLE(nombreParticipants bigint) AS

Et quand j'appelle ensuite ma fonction par select * from maFonction(2), cette fois-ci il me retourne le résultat avec le nom nombreParticipants, comme je le désire et non pas avec le nom de la fonction.


Pourtant, après avoir créé la fonction, pgAdmin m'affiche dans le SQL pane la fonction avec un RETURNS SETOF et ce même si je l'ai créée avec l'appellation RETURNS TABLE


Autre point, dans le cas où je la crée en écrivant RETURNS TABLE(), le SQL pane m'affiche IN à gauche de mon paramètre d'entrée :
CREATE OR REPLACE FUNCTION maFonction(IN intSondageid integer)
  RETURNS SETOF bigint AS


alors qu'il ne le fait pas dans le cas où je la crée en écrivant RETURNS SETOF.


Ma question est donc : est-ce un bug d'interprétation de code par Postgres ou bien il y a une configuration particulière à faire dans pgAdmin ou sur le serveur pour éviter cette confusion ?

en espérant avoir été suffisamment clair.
Merci !

Pied de page des forums

Propulsé par FluxBB