- Може ли PostgreSQL да извърши свързване между две ~процедури, при които колоните не са известни до момента на изпълнение?
Основният отговор е прост, защото понастоящем няма съхранени процедури в Postgres (до Postgres 10), само функции - които осигуряват почти, но не съвсем същата функционалност, както сте посочили във въпроса.
И всяка функция може да се използва в FROM
клауза на SELECT
заявка като всяка друга таблица.
Актуализация:
Процедурите на SQL („запазени процедури“) се въвеждат с Postgres 11.
Ръководството за CREATE PROCEDURE
.
Самият SQL изисква да знае типа на връщането по време на изпълнение. Има граница :можете да декларирате типа на връщане с извикването на функцията, като използвате полиморфни типове . Подробни инструкции тук (последната глава е най-подходяща за вас):
- Рефакторирайте функция PL/pgSQL, за да върнете резултатите от различни SELECT заявки
- Може ли да направи същото, освен да използва съхранени процедури, които се намират във външна база данни на трета страна (може би чрез чужди обвивки на данни или някакъв друг механизъм)?
Това е НЕ , също на същия принцип. Ако използвате чужди таблици, трябва да предоставите ясно дефиниран тип връщане по един или друг начин.
Вие можете да можете да обедините целия ред в резултат на съхранена процедура на SQL-Server в едно текстово представяне, ограничено от табулатори, но тогава (освен, че е податливо на грешки и е неефективно) имате една колона и се нуждаете от мета информацията, дефинираща отделни колони един или друг начин за извличане на колони - хванете 22.