Em 27/02/14, Carlos Antônio Pereira (VidaUTI)<[email protected]> escreveu: >>Então, como já foi dito antes, estude os diversos tipos de JOIN que, >>pela sua explicação, me parece que você desconhece, e faça uma única >>consulta. > > Osvaldo, > > Em um contexto de junção eu faria isso: > > SELECT > s.*, -- Registros do servico > r.*, -- Registros da Remocao > st.ocorrencia AS sintomatologia, -- sintomatologia > o.ocorrencia AS orientacao -- orientacao > > FROM servico s > > -- Liga remocao quando existir > LEFT JOIN servico_agenda_remocao r > ON (s.num_servico = r.num_servico) > > --Liga orientacao quando existir > LEFT JOIN servico_ocorrencias AS o > ON (s.num_servico = o.num_servico AND o.referencia = '00') > > > --Liga sintomatologia quando existir > LEFT JOIN servico_ocorrencias AS st > ON (s.num_servico = st.num_servico AND st.referencia = '01') > > > --Liga quadro clinico quando existir > LEFT JOIN servico_ocorrencias AS qc > ON (s.num_servico = qc.num_servico AND qc.referencia = '04') > > WHERE s.num_servico = 227571 > > > Isso resolve. > Minha intenção com uma função seria avaliar a classificação do serviço > (Atendimento ou Remoção) > e buscar apenas o que for pertinente: > > Atendimento: > Possui 1 registro em serviço, 1 registro de sintomatologia e 1 registro de > orientacao > Remocao: > Possui 1 registro em serviço, 1 registro em servico_remocao e 1 registro de > > quadro clinico > > > Finalmente, o cerne da minha pergunta (vide título) seria da possibilidade > de concatenar variaveis do tipo record e retorná-las. > Nem entrei no contexto do negócio porque isso é irrelevante pelo texto que > submeti à lista. > > SELECT 1 as um, 2 as dois INTO rec1 // Um retorno de única linha > SELECT 3 as tres, 4 as quatro INTO rec2 // Um retorno de única linha > > concatenação rec1 X rec2: > > um dois tres quatro > 1 2 3 4 >
Nunca usei algo do tipo mas, pelo que entendo da documentação [1], isto não seria possível em uma função PL/pgSQL. O que você poderia tentar é construir diferentes SELECTs com diferentes RETURNs mas, neste caso, creio que você teria problemas nas chamadas da função (quando você retorna um RECORD você precisa especificar na chamada a lista de campos, com respectivos tipos, que está(ão) sendo retornado(s)). Osvaldo [1] http://www.postgresql.org/docs/current/interactive/plpgsql-declarations.html#PLPGSQL-DECLARATION-RECORDS _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
