Bonjour,
Mon problème est dans le titre.
Contexte : lorsque l'utilisateur remplie les zones de saisies avant génération du formulaire, je dois mettre à jour des champs avant le SELECT du rapport. Bien entendu, comme ce n'est pas possible directement, je suis passé par une procédure stockée, tel que:
- ma requête du rapport est comme suit :
- ma procédure stockée est comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM func_seuils($P{rc},$P{rs},$P{fc},$P{fs})
Apparament, Jasper crée nativement des transactions en mode READ ONLY, et ajouter un SET TRANSACTION READ WRITE juste après le BEGIN n'est pas une solution (paramétrage impossible si une requête a déjà été effectuée, ce qui est le cas par Jasper).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 CREATE TYPE type_seuils AS ( ratio_critical numeric(4,2), ratio_survey numeric(4,2), freq_critical numeric(4,2), freq_survey numeric(4,2) ); CREATE OR REPLACE FUNCTION func_seuils(rc numeric, rs numeric, fc numeric, fs numeric) RETURNS SETOF type_seuils AS $BODY$ DECLARE record type_seuils; BEGIN UPDATE seuils SET ratio_critical = coalesce(rc::numeric(4,2), ratio_critical), ratio_survey = coalesce(rs::numeric(4,2), ratio_survey), freq_critical = coalesce(fc::numeric(4,2), freq_critical), freq_survey = coalesce(fs::numeric(4,2), freq_survey); FOR record IN SELECT ratio_critical, ratio_survey, freq_critical, freq_survey FROM seuils LOOP RETURN NEXT record; END LOOP; RETURN; END; $BODY$ LANGUAGE 'plpgsql';
Voilà, quelqu'un peut-il m'aider à m'en sortir?
Cordialement,
Partager