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

Responder a