Vous n'êtes pas identifié(e).
Pages : 1
Mon application c'est pour un projet à la fac donc pour le moment ça c'est pas bien grave les failles de sécurité, mais merçi pour vos conseil car c'est vrai que je n'avais pas pensé aux injections sql.
vous m'avez pas compris j'avais just posté la partie qui marchait pas mais pas tout le code pour aller plus vite mais bon, j'ai lu la doc sur votre lien assez rapidement faute de temps mais pour mon erreur je sais pas quoi faire
pour ètre plus précis voila ma fonction
CREATE OR REPLACE FUNCTION test_multivaluate_dependancy(
left_attribut character varying,
right_attribut character varying,
val character varying,
val1 character varying,
tab character varying
)
returns integer as $$
DECLARE
i integer:=1 ;
i1 integer ;
bool boolean:=true ;
lio character varying;
BEGIN
--EXECUTE 'select ' || left_attribut || ' from '||tab||' where ' ||right_attribut|| '=' || quote_literal(val)
--into lio;
EXECUTE 'select '|| left_attribut || ' from ' ||tab||' where ' ||right_attribut|| '=' || quote_litera(val)
||' and ' ||left_attribut|| '=' || quote_literal(val1) offset 1 limit 1
into lio;
--select * from tab offset 1 limit 1;
return i;
END;
$$LANGUAGE 'plpgsql'
SECURITY DEFINER;
non c'est des variables , c'est les paramètres de ma fonctions(x,y,val)
c'est le offset qui pose problème car lorsque je l'utilise dans une requète non dynamique donc sans execute ça marche.
non pas du tout
j'ai une erreur du type l'argument de l'execute est null
merci pour vos réponses.
ok, j'ai un autre soucis
quand je met un offset dans ma requète dynamique j'ai une erreur
execute 'select' || x|| 'from' 'tab' where 'y' '=' quote_literal(val) offset 1 LIMIT 1 into c;
effectivement,
le || sert à quoi au faite, jai pas bien compris car j'ai pas vraiment eu le tps de lire les doc
mais je croi savoir que l'on l'utilise pr faire savoir au code que l'on utilise des paramètre dynamique, c'est bien ça?
pourtant ça marché qd j'enlève la partie " and ' ||left_attribut|| '=' || quote_literal(val1) "
erreur: le type quote literal n'existe pas
Bonjour, j'ai essaye ce code mais ça marche pas
EXECUTE 'select count('|| left_attribut ||') from ' ||tab||' where ' ||right_attribut|| '=' || quote_literal(val)
' and ' ||left_attribut|| '=' || quote_literal(val1)
into i;
sans ' and ' ||left_attribut|| '=' || quote_literal(val1) ça marche mais qd je rajoute la partie du and j'ai une erreur du type le quote_literal n'existe pas
es -ce que quelqu'un aurrai une réponse
merçi
pffff oui c'était bien cela le E, ben merçi bien.
oui ça passe sans le count
avec les balises c'est mieux lol
EXCUTE 'select count('|| left_attribut ||') from film where acteur = "cameron"';
maintenant je voudrai faire un select count() et avec un attribut dans mon count. j'ai essayé :
EXCUTE 'select count('|| left_attribut ||') from film where acteur = "cameron"';
mais rien à faire.
es ce que vous avez une solution? Dans les tutos que j'ai lu j'ai rien trouvé.
Merçi.
Merçi ca marche voilà la bonne syntaxe
CREATE OR REPLACE FUNCTION multivaluate_dependancy(
left_attribut character varying,
right_attribut character varying,
val character varying,
tab character varying
)
returns boolean as $$
DECLARE
i integer ;
i1 integer ;
bool boolean:=true ;
lio character varying;
BEGIN
EXECUTE 'select ' || left_attribut || ' from '||tab||' where ' ||right_attribut|| '=' || quote_literal(val)
into lio;
--EXCUTE 'select count('|| left_attribut ||') from film where acteur = "cameron"';
return bool;
END;
$$LANGUAGE 'plpgsql'
SECURITY DEFINER;
ok la fonction quote_literal() est prédéfinie ds postgree?
ca ne marche pas non plus javais déja essayé cela mais il considère "Cameron " comme une colonne
comment faire pour indiquer à la requète que "cameron" doit ètre une valeur d'attribut mais pas un attrbut?
ok, mais qd je fait ça après j'ai une erreur du type la colnne <<cameron>> n'existe pas pourtant cameron est valeur d'attribut
merçi.
l'opérateur n'existe pas : text ||
Bonjour
j'essai en fait de d'crire une fonction qui prend en paramètre deux attirbuts et ses valeurs et un nom de table sans succès.
Ma fonction doit effectuer des recherches en fonction de ces paramètres
Comment faire ?
Merçi
CREATE OR REPLACE FUNCTION multivaluate_dependancy(
left_attribut character varying,
right_attribut character varying,
tab character varying
)
returns boolean as $$
DECLARE
i integer ;
i1 integer ;
bool boolean:=true ;
lio character varying;
BEGIN
EXECUTE 'select ' || left_attribut || ' into lio from '||tab||' where' ||right_attribut|| = 'cameron';
return bool;
END;
$$LANGUAGE 'plpgsql'
SECURITY DEFINER;
Pages : 1