- Dapatkah PostgreSQL melakukan penggabungan antara dua ~prosedur yang kolomnya tidak diketahui hingga waktu proses?
Jawaban dasarnya sederhana karena saat ini tidak ada prosedur tersimpan di Postgres (hingga Postgres 10), hanya fungsi - yang menyediakan fungsi yang hampir tetapi tidak persis sama, seperti yang telah Anda jelaskan dalam pertanyaan.
Dan fungsi apa pun dapat digunakan di FROM
klausa dari SELECT
kueri seperti tabel lainnya.
Pembaruan:
prosedur SQL ("prosedur tersimpan") diperkenalkan dengan Postgres 11.
Manual untuk CREATE PROCEDURE
.
SQL sendiri menuntut untuk mengetahui tipe pengembalian saat runtime. Ada kasus perbatasan :Anda dapat mendeklarasikan tipe kembalian dengan pemanggilan fungsi menggunakan tipe polimorfik . Instruksi terperinci di sini (bab terakhir adalah yang paling relevan bagi Anda):
- Memfaktorkan ulang fungsi PL/pgSQL untuk mengembalikan output dari berbagai kueri SELECT
- Dapatkah melakukan hal yang sama, kecuali menggunakan prosedur tersimpan yang berada di database pihak ketiga eksternal (mungkin melalui pembungkus data asing atau mekanisme lain)?
Itu adalah TIDAK , juga, berdasarkan prinsip yang sama. Jika Anda menggunakan tabel asing, Anda harus memberikan tipe pengembalian yang jelas satu atau lain cara.
Anda mungkin dapat menyatukan seluruh baris yang dihasilkan dari prosedur yang disimpan SQL-Server menjadi representasi teks yang dibatasi tab tunggal, tetapi kemudian (selain rawan kesalahan dan tidak efisien) Anda memiliki satu kolom dan memerlukan informasi meta yang mendefinisikan kolom individual satu atau cara lain untuk mengekstrak kolom - tangkap 22.