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

Responder a