PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL può eseguire un join tra due stored procedure di SQL Server?

  1. PostgreSQL può eseguire un join tra due ~procedure in cui le colonne non sono note fino al runtime?

La risposta di base è semplice perché al momento non ci sono stored procedure in Postgres (fino a Postgres 10), solo funzioni, che forniscono quasi, ma non proprio la stessa funzionalità, come hai spiegato nella domanda.

E qualsiasi funzione può essere utilizzata nel FROM clausola di un SELECT query come qualsiasi altra tabella.

Aggiornamento:
Le procedure SQL ("procedure memorizzate") vengono introdotte con Postgres 11.
Il manuale per CREATE PROCEDURE .

SQL stesso richiede di conoscere il tipo restituito in fase di esecuzione. C'è un caso di frontiera :puoi dichiarare il tipo restituito con la chiamata di funzione usando tipi polimorfici . Istruzioni dettagliate qui (l'ultimo capitolo è più rilevante per te):

  • Refactoring di una funzione PL/pgSQL per restituire l'output di varie query SELECT
  1. Può fare lo stesso, ad eccezione dell'utilizzo di procedure archiviate che risiedono in un database esterno di terze parti (magari tramite wrapper di dati esterni o qualche altro meccanismo)?

Questo è un NO , anch'esso basato sullo stesso principio. Se utilizzi tabelle estranee, devi fornire un tipo di ritorno chiaramente definito nell'uno o nell'altro modo.

potresti essere in grado di raggruppare l'intera riga risultante da una procedura archiviata in SQL Server in un'unica rappresentazione di testo delimitata da tabulazioni, ma poi (oltre ad essere soggetta a errori e inefficiente) hai una singola colonna e hai bisogno delle meta informazioni che definiscono le singole colonne uno o l'altro modo per estrarre le colonne - catch 22.