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 11/01/2014 22:06:56

kosted
Membre

Aucune fonction ne correspond au nom donné et aux types d'arguments

Bonsoir à tous,
Je suis certain que cette question a déjà été posée, mais vu que je viens juste de rejoindre la communauté, je ne sais pas encore comment fonctionne le site.

Voilà, j'ai une procédure qui me permet de faire des modifications dans une table dans une base de données puis de mettre à jour une table historique. Cependant, à chaque fois que je veux tester ma procédure j'ai comme message d'erreur : "HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.". J'ai donc caster toutes les réponses, mais j'ai tours la même erreur. J'ai tellement cherché la réponse la réponse que je suis fatigué. Aidez-moi svp. Je vous mets le code entier :



/*----------------------------------------------------------------------------------------------------------*/
--La procédure qui met à jour la table histo_echantillon fonctionne exactement comme la précédente

CREATE or REPLACE FUNCTION traces.insert_dans_echantillon( id_texture integer,
  id_roche integer,
  id_bac integer,
  id_gites integer,
  nume numeric(3,0),
  morphologiee varchar(25),
  anneeprelevemente date,
  longueur numeric(3,2),
  largeur numeric(3,2),
  epaisseur numeric(3,2),
  tramee varchar(10),
  graine varchar(100),
  opacitee varchar(100),
  structuree varchar(15),
  descriptione text,
  couleure varchar(25),
  estcomplete boolean, collecteure varchar(25),
           nomutilisateur varchar(50), typemodif varchar(20),creation integer,numesimodifousupr integer) RETURNS VOID AS $$
DECLARE
--on récupère l'id du gite et de l'echantillon
id_echantillon integer := nextval('traces.echantillons_id_echantillon_seq'::regclass);
idhisto  integer := nextval('traces.histo_echantillons_id_histoe_seq'::regclass);
                                  
                                  
BEGIN

if(creation=0) then


-- on fait une insertion dans la table echanttillon
    INSERT INTO traces.echantillons values(
            id_echantillon, id_texture, id_roche, id_bac, id_gites, nume,
            morphologiee, anneeprelevemente, longueur, largeur, epaisseur,
            tramee, graine, opacitee, structuree, descriptione, couleure,
            estcomplete,collecteure);


           
           
            --ensuite on met à jour la table histo_gites
                                        
                   INSERT INTO traces.histo_echantillons
                          VALUES (idhisto,nomutilisateur ,'creation',current_timestamp,nume);

else

           
            if typeModif = 'modification' then   -- cas de modification
                
               
               
               INSERT INTO traces.histo_echantillons
                          VALUES (idhisto,nomutilisateur ,'modification',current_timestamp,numesimodifousupr);
            END IF;
           
            if typeModif ='suppression' then   -- cas de suppression
                
                   INSERT INTO traces.histo_echantillons
                          VALUES (idhisto,nomutilisateur ,'suppression',current_timestamp,numesimodifousupr);
            END IF;

end if;

           
           
END;
$$ LANGUAGE plpgsql;

--test
SELECT traces.insert_dans_echantillon(
    cast(1 as integer),
    cast(1 as integer),
    cast(1 as  integer),
    cast(22 as integer),
    cast(58 as numeric),
    cast('bizarre' as varchar),
    cast('23-07-1994' as date),
    cast(5 as numeric),
    cast(1 as numeric),
    cast(3 as numeric),
    cast('normale' as varchar),
    cast('petite graine' as varchar),
    cast('pas très opaque' as varchar),
    cast('structure' as varchar),
    cast('cet echantillon a été prélevé dans le nord pas-de-calais' as varchar),
    cast('verte' as varchar),
    cast(true as boolean),
    cast('Gaston Lagafe' as varchar),
    cast('creation' as varchar),
    cast( 0 as integer),
    cast( 0 as integer)
);

Hors ligne

#2 12/01/2014 15:03:53

gleu
Administrateur

Re : Aucune fonction ne correspond au nom donné et aux types d'arguments

22 arguments dans la déclaration, 21 dans l'appel...


Guillaume.

Hors ligne

#3 12/01/2014 18:00:19

kosted
Membre

Re : Aucune fonction ne correspond au nom donné et aux types d'arguments

Merci, c'était une erreur bête, mais fallait la voir.

Hors ligne

#4 12/01/2014 23:49:49

gleu
Administrateur

Re : Aucune fonction ne correspond au nom donné et aux types d'arguments

Pas de soucis smile


Guillaume.

Hors ligne

Pied de page des forums