PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O PostgreSQL pode realizar uma junção entre dois procedimentos armazenados do SQL Server?

  1. O PostgreSQL pode realizar uma junção entre dois ~procedures onde as colunas não são conhecidas até o tempo de execução?

A resposta básica é simples porque atualmente não há procedimentos armazenados no Postgres (até o Postgres 10), apenas funções - que fornecem quase, mas não exatamente a mesma funcionalidade, como você expôs na pergunta.

E qualquer função pode ser usada no FROM cláusula de um SELECT consulta como qualquer outra tabela.

Atualização:
Procedimentos SQL ("procedimentos armazenados") são introduzidos com o Postgres 11.
O manual para CREATE PROCEDURE .


O próprio SQL exige saber o tipo de retorno em tempo de execução. Há um caso de fronteira :você pode declarar o tipo de retorno com a chamada de função usando tipos polimórficos . Instruções detalhadas aqui (o último capítulo sendo mais relevante para você):
  • Refatorar uma função PL/pgSQL para retornar a saída de várias consultas SELECT
  1. Ele pode fazer o mesmo, exceto usando procedimentos armazenados que residem em um banco de dados externo de terceiros (talvez por meio de wrappers de dados externos ou algum outro mecanismo)?

Isso é um NÃO , também, com base no mesmo princípio. Se você usar tabelas estrangeiras, deverá fornecer um tipo de retorno claramente definido de uma forma ou de outra.

Você pode ser capaz de agrupar toda a linha resultante de um procedimento armazenado no SQL Server em uma única representação de texto delimitada por tabulação, mas então (além de ser propenso a erros e ineficiente) você tem uma única coluna e precisa das informações meta definindo colunas individuais uma ou outra maneira de extrair colunas - pegue 22.