- Czy PostgreSQL może wykonać łączenie dwóch ~procedur, w których kolumny nie są znane do czasu uruchomienia?
Podstawowa odpowiedź jest prosta, ponieważ obecnie nie ma procedur składowanych w Postgresie (do Postgres 10), tylko funkcje - które zapewniają prawie, ale nie do końca taką samą funkcjonalność, jak w pytaniu.
I każda funkcja może być użyta w FROM
klauzula SELECT
zapytanie jak każda inna tabela.
Aktualizacja:
Procedury SQL ("procedury składowane") zostały wprowadzone w Postgres 11.
Podręcznik CREATE PROCEDURE
.
Sam SQL wymaga znajomości zwracanego typu w czasie wykonywania. Istnieje przypadek graniczny :możesz zadeklarować zwracany typ za pomocą wywołania funkcji przy użyciu typów polimorficznych . Szczegółowe instrukcje tutaj (ostatni rozdział jest dla Ciebie najbardziej odpowiedni):
- Refaktoryzuj funkcję PL/pgSQL, aby zwrócić dane wyjściowe różnych zapytań SELECT
- Czy może zrobić to samo, z wyjątkiem korzystania z procedur przechowywanych, które znajdują się w zewnętrznej bazie danych innej firmy (być może za pośrednictwem zewnętrznych opakowań danych lub innego mechanizmu)?
To NIE również w oparciu o tę samą zasadę. Jeśli korzystasz z tabel obcych, musisz w taki lub inny sposób podać jasno zdefiniowany typ zwrotu.
możesz być w stanie zbić cały wiersz będący wynikiem procedury przechowywanej na serwerze SQL w pojedynczą reprezentację tekstową rozdzielaną tabulatorami, ale wtedy (oprócz tego, że jest podatny na błędy i nieefektywny) masz pojedynczą kolumnę i potrzebujesz metainformacji definiujących poszczególne kolumny jeden lub drugi sposób na wyciągnięcie kolumn - złap 22.