Vous n'êtes pas identifié(e).
Bonjour,
J'exécute une fonction qui a en paramètres le nom de colonne à afficher + le nom de colonne sur laquelle la recherche est effectuée + la valeur que l'on recherche
CREATE FUNCTION maFonction(colonne_1 varchar, colonne_2 varchar, mavaleur varchar) returns varchar as $$
select distinct $1 from matable where $2 = $3;
$$ language 'sql';
La valeur est toujours <NULL> . j'ai essayé avec select INTO, RETURN...etc mais je n'ai toujours rien
C'est ma première expérience avec PSQL et je n'arrive pas à trouver ou est le souci?
Y'aurait-il un moyen d'afficher la requête exécuté par la fonction?
Merci d'avance
Hors ligne
Vous ne pouvez pas utiliser de paramètre pour les colonnes ou tables. Vous devez construire une requête dynamique. Voyez avec format() (https://www.postgresql.org/docs/current/functions-string.html ) par exemple.
Julien.
https://rjuju.github.io/
Hors ligne
Merci, cela fonctionne maintenant
req := 'SELECT distinct ' || colonne_1 ||' FROM matable WHERE "' || colonne_2 || '" = \'' || mavaleur || '\'';
EXECUTE req INTO val_retour;
RETURN;
Merci encore
Hors ligne
Si vous n'utilisez pas la fonction format() ou de paramètres, utilisez au moins la fonction quote_ident() pour que votre fonction n'explose pas en vol le jour ou des noms de colonne nécessitant des guillemets doubles seront utilisés, et quote_literal() pour éviter des injections SQL (cf https://www.postgresql.org/docs/current … CUTING-DYN ).
Julien.
https://rjuju.github.io/
Hors ligne