2013/5/2 izaque Maciel <izaquemac...@gmail.com>

> Matheus, caso o retorno da functionY seja vários campos "numeric" para
> cada linha, o return pode ser "numeric" ou deve ser "record"?
>

Só use RECORD caso vá retornar várias colunas (independente do número de
linhas).

Veja uma função de exemplo:

CREATE OR REPLACE FUNCTION function_y()
RETURNS SETOF NUMERIC
LANGUAGE plpgsql AS $$
BEGIN
    RETURN NEXT 1;
    RETURN NEXT 2;
    RETURN NEXT 3;
    RETURN NEXT 4;
END
$$;

Retorna as linhas: 1, 2, 3 e 4.



> E se fosse vários campos, numeric e varchar para cada linha?
>
>
Nesse caso você deveria usar SETOF (RECORD|TYPE|TABLE) ou RETURNS TABLE.
Exemplo com RETURNS TABLE:

CREATE OR REPLACE FUNCTION function_y()
RETURNS TABLE (numero NUMERIC, str VARCHAR)
LANGUAGE plpgsql AS $$
BEGIN
    numero = 1;
    str = 'A';
    RETURN NEXT;

    numero = 2;
    str = 'B';
    RETURN NEXT;

    numero = 3;
    str = 'C';
    RETURN NEXT;
END
$$;

Resultaria em algo como:

=> SELECT * FROM function_y();
 numero | str
------------+-----
          1 | A
          2 | B
          3 | C

OBS: Não testei as funções, mas devem estar corretas.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a