return: SETOF record
|
|
lang: plpgsql
|
|
parameters:
|
|
p0:
|
|
type: bigint
|
|
name: i_indicateur_id
|
|
p1:
|
|
type: text
|
|
name: i_table_name
|
|
p2:
|
|
type: text
|
|
name: i_option
|
|
src: |
|
|
DECLARE
|
|
sqlcmd text;
|
|
|
|
temp_cursor refcursor;
|
|
_oid integer;
|
|
_count integer;
|
|
_table_count integer;
|
|
_maxind integer;
|
|
_indicateur_name text;
|
|
|
|
row RECORD;
|
|
BEGIN
|
|
|
|
_maxind = 100;
|
|
_table_count = 0;
|
|
|
|
OPEN temp_cursor FOR
|
|
SELECT MAX(oid), SUM(CASE WHEN i_table_name = table_name THEN 1 ELSE 0 END)
|
|
FROM pmsi.t_indicateurs
|
|
WHERE oid IN (
|
|
SELECT base.cti_unnest(Array[oid, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id])
|
|
FROM pmsi.t_indicateurs
|
|
WHERE oid = i_indicateur_id);
|
|
|
|
FETCH temp_cursor INTO _oid,_count;
|
|
WHILE FOUND LOOP
|
|
_maxind = _oid;
|
|
_table_count = _count;
|
|
FETCH temp_cursor INTO _oid, _count;
|
|
END LOOP;
|
|
CLOSE temp_cursor;
|
|
_indicateur_name = CASE i_table_name
|
|
WHEN 'v_rss_1' THEN 'INDICATEURS_RSS'
|
|
WHEN 'v_rss_rum_1' THEN 'INDICATEURS_RUM'
|
|
WHEN 'v_rsf_detail_1' THEN 'INDICATEURS_PRESTA'
|
|
WHEN 'v_rsf_detail_6' THEN 'INDICATEURS_PRESTAH'
|
|
WHEN 'v_rss_lpp_1' THEN 'INDICATEURS_LPP'
|
|
WHEN 'v_rss_ucd_1' THEN 'INDICATEURS_UCD'
|
|
WHEN 'v_rss_actes_1' THEN 'INDICATEURS_ACTE'
|
|
WHEN 'v_rss_diagnostics_1' THEN 'INDICATEURS_DIAG'
|
|
WHEN 'v_rss_cancero_1' THEN 'INDICATEURS_CANCERO'
|
|
WHEN 'v_rss_src_1' THEN 'INDICATEURS_SRC'
|
|
WHEN 'v_rsf_detail_rum_1' THEN 'INDICATEURS_PRESTA_RUM'
|
|
WHEN 'v_rss_sae_1' THEN 'INDICATEURS_RSS_SAE'
|
|
ELSE 'INDICATEURS_OTHERS' END;
|
|
IF (_table_count = 0) THEN
|
|
FOR row IN SELECT _indicateur_name::text, ''::text
|
|
LOOP
|
|
RETURN NEXT row;
|
|
END LOOP;
|
|
END IF;
|
|
IF (_table_count > 0) THEN
|
|
FOR row IN
|
|
SELECT
|
|
_indicateur_name::text, base.cti_group_concat(CASE WHEN subview.oid IS NOT NULL THEN total_function || '(' || column_name || ')' ELSE 'NULL::numeric' END)
|
|
FROM generate_series(1, _maxind)
|
|
LEFT JOIN
|
|
(
|
|
SELECT *
|
|
FROM pmsi.t_indicateurs
|
|
WHERE oid IN (
|
|
SELECT base.cti_unnest(Array[oid, indicateur_associe_1_id, indicateur_associe_2_id, indicateur_associe_3_id, indicateur_associe_4_id, indicateur_associe_5_id])
|
|
FROM pmsi.t_indicateurs
|
|
WHERE oid = i_indicateur_id)
|
|
) subview ON generate_series = subview.oid AND subview.table_name = i_table_name
|
|
|
|
|
|
|
|
LOOP
|
|
RETURN NEXT row;
|
|
END LOOP;
|
|
END IF;
|
|
|
|
RETURN ;
|
|
END;
|