serviço complicado vou mandar outra duvida dai vou embora:
assim não esta funcionando da erro nas datas, por causa das aspas:
create or replace function edc_singleresult15m3
-- (myref IN OUT ref_cursor $1, ntag1 IN char$2, ntag2 IN char$3, ntag3
IN char $4, dt1 char $5, dt2 char $6,itpFunc integer $7)
(refcursor, char, char, char , char , char,integer)
RETURNS refcursor as
'
declare
--r1 edc_sql_2tag_grp.ref1;
r1 refcursor;
vtable varchar(30);
mySql varchar(32767);
ipos int;
iAVG varchar(100);
BEGIN
-- LEITURA DOS NOMES DAS TABELAS DISPONIVEIS NA TABELA DE CONTROLE --
ipos := 0;
if ($7 = 1) then iAVG := '' avg(valor) as Consumo ''; end if;
if ($7 = 2) then iAVG := '' max(valor) as Consumo ''; end if;
if ($7 = 3) then iAVG := '' min(valor) as Consumo ''; end if;
--mySql := ''SELECT BH_NOME FROM BH_PAS_H_CTL ;'';--2 aspas simples
mySql := ''SELECT BH_NOME FROM BH_PAS_H_CTL ''
'' where BH_DTHR >= cast( ''''02-21-2006'' as date) and BH_DTHR <= cast(
''01-21-2006'' as date); '';
OPEN $1 FOR EXECUTE mySql ;
RETURN $1;
-- FIM DA CRIACAO DO CURSOR DA LEITURA DE TODAS AS TABELAS DISPONIVEIS --
END;
'
language plpgsql
na relaciade preciso que funcione puxando as datas dos parametros($5,$6):
-----------------------------------------------------------------------------------------------------
-- PROCEDURE RETORNA DADOS SINGLERESULT DE 1HORA COM TRES TAGS
-----------------------------------------------------------------------------------------------------
create or replace function edc_singleresult15m3
-- (myref IN OUT ref_cursor $1, ntag1 IN char$2, ntag2 IN char$3, ntag3
IN char $4, dt1 char $5, dt2 char $6,itpFunc integer $7)
(refcursor, char, char, char , char , char,integer)
RETURNS refcursor as
'
declare
--r1 edc_sql_2tag_grp.ref1;
r1 refcursor;
vtable varchar(30);
mySql varchar(32767);
ipos int;
iAVG varchar(100);
BEGIN
-- LEITURA DOS NOMES DAS TABELAS DISPONIVEIS NA TABELA DE CONTROLE --
ipos := 0;
if ($7 = 1) then iAVG := '' avg(valor) as Consumo ''; end if;
if ($7 = 2) then iAVG := '' max(valor) as Consumo ''; end if;
if ($7 = 3) then iAVG := '' min(valor) as Consumo ''; end if;
--mySql := ''SELECT BH_NOME FROM BH_PAS_H_CTL ;'';--2 aspas simples
mySql := ''SELECT BH_NOME FROM BH_PAS_H_CTL ''
'' where BH_DTHR >= cast( ''$5'' as date) and BH_DTHR <= cast( ''$6''
as date); '';
OPEN $1 FOR EXECUTE mySql ;
RETURN $1;
-- FIM DA CRIACAO DO CURSOR DA LEITURA DE TODAS AS TABELAS DISPONIVEIS --
END;
'
language plpgsql
continuarei a quebrar a cabeá, se algume souber ira em muito me ajudar!!!
Obriago
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br