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 05/04/2005, 10h49   #1
Invité de passage
 
Inscription : mai 2004
Messages : 1
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 1
Points : 0
Points : 0
Par défaut [prob]Creation de function

CREATE FUNCTION insert(text,integer) RETURNS integer
AS' DECLARE
database ALIAS FOR $1;
val ALIAS FOR $2;
BEGIN
INSERT INTO database VALUES (val);
return 0;
END;'
LANGUAGE 'plpgsql';

J'ai cree cette fonction qui est sensee inserer un element(val) dans la table database. Et j'obtiens tjrs la meme erreur quand j'essai de l'executer (la table test contient un seul champs de type entier)

pulco => select insert("test",5);
ERROR: column "test" does not exist

Quelqu'un saurait il m'expliquer (je debute en postgresql)
pulco42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2005, 12h11   #2
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
PostgreSQL utilise des quotes simples pour les chaînes de caractères, donc pour appeler ta procédure stockée :

Code :
SELECT INSERT('test', 5);
Mais ça ne marchera tout de même pas car tu génères une requête dynamiquement avec tes arguments, il te faut utiliser EXECUTE :

Code :
1
2
3
4
5
6
7
8
9
CREATE OR REPLACE FUNCTION INSERT(text,integer) RETURNS integer
AS' DECLARE
database ALIAS FOR $1;
val ALIAS FOR $2;
BEGIN
EXECUTE ''INSERT INTO '' || quote_ident(database) || '' VALUES ('' || val || '')'';
return 0;
END;'
LANGUAGE 'plpgsql';
Quentin 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 01h09.


 
 
 
 
Partenaires

Hébergement Web