Ce sont les définitions de type qui me sont fournisfonctions Postgresql
create type IR as (pattern_number integer, uoc_number integer);
Mon progrès en cours est:
create or replace function q1(pattern text, uoc_threshold integer)
returns setof IR
as $$
BEGIN
RETURN QUERY
select count(code) from temp where code like $1;
RETURN QUERY
select count(code) from temp where code like $1 and uoc > $2;
END;
$$ language plpgsql;
Ma sortie doit être comme ceci: Requête: -
select *
from q1('ECO%', 6);
pattern_number | uoc_number
80 | 5
Je reçois une erreur en disant:
ERROR: structure of query does not match function result type
DETAIL: Returned type bigint does not match expected type integer in column 1.
CONTEXT: PL/pgSQL function q1(text,integer) line 3 at RETURN QUERY
Comment résoudre ce problème?
Votre fonction retourne deux lignes avec une seule colonne (bigint). Vous voulez une seule ligne avec une seule colonne qui est un enregistrement. –
est-ce que je comprends bien? vous voulez 'select count (code) de temp où code comme $ 1' comme motif_number et' select count (code) de temp où code comme $ 1 et uoc> $ 2' comme uoc_number? .. J'ai ajouté la réponse avec le code - sic? –
@VaoTsun Oui. C'est exactement ce que je veux mais votre réponse ne semble pas résoudre l'erreur –