Vous n'êtes pas identifié(e).
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
22 arguments dans la déclaration, 21 dans l'appel...
Guillaume.
Hors ligne
Merci, c'était une erreur bête, mais fallait la voir.
Hors ligne
Pas de soucis
Guillaume.
Hors ligne