PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy PostgreSQL może wykonać łączenie między dwiema procedurami składowanymi SQL Server?

  1. 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
  1. 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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać ANY zamiast IN w klauzuli WHERE w Railsach?

  2. Zwróć wiersze z INSERT z ON CONFLICT bez konieczności aktualizacji

  3. Zmaterializowany widok PostgreSQL

  4. Sprawdź, czy wartość istnieje w tablicy Postgres

  5. Dlaczego PostgreSQL połączył użytkowników i grupy w role?