Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danilo Garcia Martins

Função que retorna select de 2 tabelas

Recommended Posts

Danilo,

 

Não sei se você já consegui, mas estou lhe enviando um exemplo de uma função PostgreSQL que retorna os registros de 2 tabelas:

 


CREATE OR REPLACE FUNCTION nome_da_funcao(IN campo_entrada1 text, OUT campo_saida_1 text, OUT campo_saida_2 int4, OUT campo_saida_3 char)
RETURNS SETOF record AS
$$
DECLARE 
reg record;
BEGIN
	FOR reg IN
		SELECT * FROM tabela1 A, tabela2 B
		WHERE A.campo_tabela=B.campo_tabela AND campo_tabela = campo_entrada_1 
		LOOP
			campo_saida_1:=reg.campo_tabela1;
                        campo_saida_2:=reg.campo_tabela2;
                        campo_saida_3:=reg.campo_tabela1;
                    RETURN NEXT;
		END LOOP;
END;
$$
LANGUAGE 'plpgsql';

Explicando melhor: para você retornar registros de uma função você precisa setar o retorno da função como "SETOF record". Assim, a função retorná mais que um registro. Se você não colocar, só retornará um registro.

Você precisa declarar uma variável chamada reg (no exemplo acima) do tipo record que irá armazenar o resultado da query para depois varrermos no LOOP e setar os dados de saída (campos declarados como OUT).

 

Não sei se deu para entender ou se é isto que você precisa.

 

Qualquer coisa, pode perguntar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.