2013/5/2 izaque Maciel <[email protected]>
> 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral