sql >> Database >  >> RDS >> PostgreSQL

Kan PostgreSQL een join uitvoeren tussen twee opgeslagen SQL Server-procedures?

  1. Kan PostgreSQL een join uitvoeren tussen twee ~procedures waarvan de kolommen niet bekend zijn tot runtime?

Het basisantwoord is eenvoudig omdat er momenteel geen opgeslagen procedures zijn in Postgres (tot Postgres 10), alleen functies - die bijna, maar niet helemaal dezelfde functionaliteit bieden, zoals u in de vraag hebt uiteengezet.

En elke functie kan worden gebruikt in de FROM clausule van een SELECT query zoals elke andere tabel.

Update:
SQL-procedures ("opgeslagen procedures") worden geïntroduceerd met Postgres 11.
De handleiding voor CREATE PROCEDURE .

SQL zelf vraagt ​​om het retourtype tijdens runtime te kennen. Er is een border-case :u kunt het retourtype declareren met de functieaanroep met behulp van polymorfe typen . Gedetailleerde instructies hier (het laatste hoofdstuk is het meest relevant voor u):

  • Refactor een PL/pgSQL-functie om de uitvoer van verschillende SELECT-query's te retourneren
  1. Kan het hetzelfde doen, behalve het gebruik van opgeslagen procedures die zich in een externe database van derden bevinden (misschien via buitenlandse gegevenswrappers of een ander mechanisme)?

Dat is een NEE ook op hetzelfde principe gebaseerd. Als u buitenlandse tabellen gebruikt, moet u op de een of andere manier een duidelijk gedefinieerd retourtype opgeven.

Je misschien in staat zijn om de hele rij die voortvloeit uit een SQL-Server-opgeslagen procedure samen te vatten in een enkele door tabs gescheiden tekstrepresentatie, maar dan (behalve dat het foutgevoelig en inefficiënt is) heb je een enkele kolom en heb je de meta-informatie nodig die individuele kolommen definieert een of andere manier om kolommen te extraheren - catch 22.




  1. Lijst met tabellen in een PostgreSQL-schema

  2. Hoe DATETIME casten als een DATE in mysql?

  3. Hoe de Unicode-waarde voor een bepaald teken in SQL Server te retourneren - UNICODE()

  4. CHARTOROWID() Functie in Oracle