Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/08/2004, 09h47   #1
Membre à l'essai
 
Inscription : avril 2004
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 67
Points : 21
Points : 21
Par défaut Error : a column definition list is required ....

je dois réaliser une fonction en plpsql sur une base de données PostGreSQL. le probleme est que quand j'execute ma foncton, il y a une erreur et je ne sais pas d'ou elle vient. pourtant la syntaxe de ma fonction semble bonne.

Citation:
Error : a column definition list is required for functions returning "record"
la fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- Function: data.search_tag(varchar)
 
-- DROP FUNCTION data.search_tag(varchar);
 
CREATE OR REPLACE FUNCTION DATA.search_tag(varchar)
  RETURNS SETOF record AS
'declare
	rec record;
begin
	FOR rec IN SELECT data.evenement.evenement_id, data.evenement.evenement_debut,traitement.traitement_nom FROM traitement 
		INNER JOIN data.evenement ON (traitement.traitement_id = data.evenement.fk_traitement_id) 
		INNER JOIN data.ech_event ON (data.evenement.evenement_id = data.ech_event.fk_evenement_id) 
		INNER JOIN data.dataechantillon ON (data.ech_event.ech_event_id = data.dataechantillon.fk_ech_event) 
		WHERE data.dataechantillon.data_valeur_tex = "$1" LOOP
	RETURN NEXT rec;
	END LOOP;
return null;
end;
'
  LANGUAGE 'plpgsql' VOLATILE;
si quelqu'un peut m'expliquer ou est le soucis ? merci
chico_du_33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2004, 22h42   #2
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
A priori ta procedure est correcte, mais comme tu retourne un type record, tu doit appeler ta fonction un peu differement :

Code :
1
2
 
SELECT * FROM DATA.search_tag('123456') AS (evenement_id INT8, evenement_debut INT8, traitement_nom VARCHAR)
biensur, ne connaissant pas les types de tes colonnes tu devras adapter ...
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2006, 11h47   #3
Futur Membre du Club
 
Avatar de Warz
 
Inscription : mars 2005
Messages : 48
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 48
Points : 19
Points : 19
Je relance le topic car j'ai un soucis un peu dans ce style.

J'ai une erreur du type :
Code :
1
2
3
4
 
ERROR:  record "resultat" IS NOT assigned yet
DETAIL:  The tuple structure of a not-yet-assigned record IS indeterminate.
CONTEXT:  PL/pgSQL FUNCTION "selectcriteresplanche" line 33 at execute statement
J'effectue l'appel selon la réponse à la question ci-dessus qui m'a d'ailleurs bien cassé les pieds !

2 choses m'embêtent : le deuxième champs du record (result) est de type différent selon la requête executée (dès fois INT4, dès fois VARCHAR). Est-ce embêtant ? (sachant que dans mes requêtes de résultat je force le type du résultat à varchar, peut-être que c'est pas ça qu'il faut faire déjà)

Il me dit que le tuple n'est pas connu mais dans l'appel je dit qu'il y aura libelle et result et dans chaque requête sql executé, je retourne des valeurs que j'alias en "libelle" et "result" donc normalement tout est connu. comprends pas : : :

Est-ce à cause de ces choses qu'il me met l'erreur citée au tout début ???
Warz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2006, 17h35   #4
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

pour répondre de manière catégorique à ta question, il serait bien d'avoir l'extrait de la fonction concerné...
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h39.


 
 
 
 
Partenaires

Hébergement Web