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;
|