No PostgreSQL, a RETURNS
palavra-chave exige que você especifique o tipo exato que a função retorna. Isso pode ser um incômodo quando esse tipo é o resultado de uma consulta com vários JOINs, pois você acaba tendo que criar manualmente um TABLE
tipo com cada coluna de cada tabela JOIN-ed. Se você se juntou employees
com profiles
and jobs
, agora você tem que listar todas as três colunas da tabela:
RETURNS TABLE(
-- employees field #1
-- employees field #2
-- employees field etc.
-- ... profiles fields
-- ... jobs fields
)
Existe algum tipo de atalho para evitar isso e apenas dizer ao PostgreSQL "retorne o que a consulta retornar; não se preocupe com o tipo"? Eu descobri que o PostgreSQL tem um any
tipo ... mas ele não parece deixar você usá-lo em uma RETURNS
cláusula.
Caso contrário, existe alguma maneira de criar tipos combinando outros tipos (por exemplo, o JOIN_TABLE(employees, profiles, jobs)
tipo) ou criar tipos a partir de tabelas existentes (por exemplo, TABLE(...employees, integer job_id)
)?