You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

48 lines
1.4 KiB

return: text
lang: plpgsql
parameters:
p0:
type: integer
name: i_rapport_id
strict: STRICT
src: |
DECLARE
rapport_columns TEXT;
rapports_cursor refcursor;
numero_rubrique INTEGER;
column_name TEXT;
table_name TEXT;
total_function TEXT;
liste_code_start integer;
to_column_name TEXT;
champ_calcule TEXT;
i int2;
ch TEXT;
last_rubrique INTEGER;
BEGIN
rapport_columns = '';
last_rubrique = 0;
OPEN rapports_cursor FOR
SELECT t_rapports_rubriques.numero_rubrique,
compta.get_formule_indicateur(t_indicateurs.oid, 1)
FROM compta.t_rapports_rubriques, compta.t_indicateurs
WHERE rapport_id = i_rapport_id AND indicateur_id = t_indicateurs.oid ORDER BY t_rapports_rubriques.numero_rubrique;
FETCH rapports_cursor INTO numero_rubrique, column_name ;
WHILE FOUND LOOP
last_rubrique = last_rubrique + 1;
FOR i IN last_rubrique..numero_rubrique - 1 LOOP
rapport_columns = rapport_columns || ', 0 ' ;
last_rubrique = last_rubrique + 1;
END LOOP;
IF (rapport_columns != '') THEN
rapport_columns = rapport_columns || ', ';
END IF;
rapport_columns = rapport_columns || column_name;
FETCH rapports_cursor INTO numero_rubrique, column_name ;
END LOOP;
CLOSE rapports_cursor;
rapport_columns = 'ARRAY[' || rapport_columns || ']::text[] as indicateurs ' ;
RETURN rapport_columns ;
END;