2009/7/28 Jeferson <[email protected]> > TENHO A SEGUINTE FUNCAO > <quote> > declare > cor record; > begin > for cor in select produtocor.cor > from produtomestre > left join produtocor on produtocor.codigo=produtomestre.grade > where produtomestre.codigoreffornecedor=$1 loop > return next cor; > end loop; > return; > end; > </quote> > COMPILA MAS DA ERRO NA HORA DE USAR, O Q PODE SER???? > OUTRA DUVIDA EH QUANTO AO NUMERO DE ELEMENTOS Q PODEM SER RETORNADOS NUM > TIPO ARRAY EX. NUMERIC[] > > Jeferson,
Pelo uso do "Return Next" e da variável "cor" como "record" podemos deduzir que você esta usando um "returns setof record" na assinatura da tua função, então você precisa especificar os campos de retorno na chamada da função: select * from minha_funcao(1) as x(cor integer); Isso tudo porque um "returns setof record" especifica um tipo "genérico" de retorno, ou seja, o postgresql entende que será retornado um conjunto de registros (tuplas) mas não sabe como é formada essa estrutura. Em [1] e [2] você pode ter uma idéia do que estou falando. [1] http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING [2] http://www.postgresql.org/docs/8.4/interactive/plpgsql-declarations.html#PLPGSQL-DECLARATION-RECORDS Cordialmente, -- Fabrízio de Royes Mello >> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
