URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 39079
[ Назад ]

Исходное сообщение
"Тематический каталог: Bug correction in Function code"

Отправлено auto_topic , 23-Ноя-07 17:48 
Обсуждение статьи тематического каталога: Bug correction in Function code

Ссылка на текст статьи: http://www.opennet.me/base/dev/pivot_table.txt.html


Содержание

Сообщения в этом обсуждении
"Bug correction in Function code"
Отправлено wasuaje , 23-Ноя-07 17:48 
In its actual code returns an error in line 20
here the code corrected a probed:
CREATE OR REPLACE FUNCTION
create_pivot_report(TEXT,TEXT,TEXT,TEXT,TEXT,TEXT) RETURNS INTEGER AS '
DECLARE
pg_views_rtype pg_views%ROWTYPE;
vname_param    ALIAS FOR $1;
pivot_column   ALIAS FOR $2;
select_column  ALIAS FOR $3;
pivot_table    ALIAS FOR $4;
aggregate_func ALIAS FOR $5;
aggr_column    ALIAS FOR $6;
pivot_record   RECORD;
create_view    TEXT;
BEGIN

SELECT INTO pg_views_rtype * FROM pg_views WHERE viewname = vname_param;
IF FOUND THEN
  EXECUTE ''DROP VIEW '' || quote_ident(vname_param) ;
END IF;
create_view :=
''CREATE VIEW '' || quote_ident(vname_param) ||
'' AS SELECT '' || quote_ident(select_column) ;
FOR pivot_record IN
EXECUTE ''SELECT DISTINCT CAST(''
        || quote_ident(pivot_column)
        || '' AS TEXT) AS col1 FROM ''
        || quote_ident(pivot_table)
    || '' order by 1''
LOOP
  create_view :=
   create_view || '','' || aggregate_func ||
   ''(CASE '' || quote_ident(pivot_column) ||
   '' WHEN '' || quote_literal(pivot_record.col1) ||
   '' THEN '' || quote_ident(aggr_column) ||
   '' ELSE 0 END) AS "'' || pivot_record.col1 || ''"'' ;
END LOOP;
create_view :=
create_view || '','' || aggregate_func ||
''('' || quote_ident(aggr_column) || '') AS "'' || aggregate_func ||
'' of '' || aggr_column || ''" FROM '' || quote_ident(pivot_table) ||
'' GROUP BY '' || quote_ident(select_column);
EXECUTE create_view ;

RETURN 0;
END;
' LANGUAGE 'plpgsql' ;