sql >> Databáze >  >> RDS >> PostgreSQL

Může PostgreSQL provést spojení mezi dvěma uloženými procedurami SQL Serveru?

  1. Může PostgreSQL provést spojení mezi dvěma ~procedurami, kde sloupce nejsou známy až do běhu?

Základní odpověď je jednoduchá, protože v současnosti neexistují žádné uložené procedury v Postgresu (až do Postgres 10) pouze funkce - které poskytují téměř, ale ne zcela stejnou funkcionalitu, jak jste uvedli v otázce.

A v FROM lze použít jakoukoli funkci klauzule SELECT dotaz jako každá jiná tabulka.

Aktualizace:
Procedury SQL ("uložené procedury") jsou představeny v Postgres 11.
Příručka pro CREATE PROCEDURE .

SQL sám vyžaduje znát návratový typ za běhu. Existuje hraniční případ :návratový typ můžete deklarovat voláním funkce pomocí polymorfních typů . Podrobné pokyny zde (nejdůležitější pro vás je poslední kapitola):

  • Refaktorujte funkci PL/pgSQL tak, aby vrátila výstup různých SELECT dotazů
  1. Může to udělat totéž, kromě použití uložených procedur, které jsou umístěny v externí databázi třetí strany (možná prostřednictvím cizích datových obalů nebo jiného mechanismu)?

To je NE také na stejném principu. Pokud používáte cizí tabulky, musíte poskytnout jasně definovaný návratový typ jedním nebo druhým způsobem.

Možná být schopen shrnout celý řádek vyplývající z procedury uložené na serveru SQL do jediné textové reprezentace oddělené tabulátory, ale pak (kromě toho, že je náchylný k chybám a je neefektivní), máte jeden sloupec a potřebujete metainformace definující jednotlivé sloupce jeden nebo druhý způsob extrahování sloupců - catch 22.




  1. Jak vytvořit jedinečné omezení pro více sloupců v SQL Server - SQL Server / TSQL výukový program, část 96

  2. XML Server Optimalizace výkonu XML

  3. Veselé tweety o životě DBA

  4. Výpočet vzdálenosti mezi dvěma body (zeměpisná šířka, délka)