tbo*_*one 1 sql database sql-server postgresql foreign-data-wrapper
这个问题与前面的问题有关:为什么从关系数据库中不支持的存储过程中进行选择?
在SQL Server,则无法执行连接(或从选择)存储过程(请注意:一个存储过程是从一个完全不同的功能(在SQL Server术语表值函数) -一个功能,你知道列在设计时返回,但是使用一个过程,直到运行时才知道要返回的特定列).
对于SQL Server,确实存在"DBA通常不允许"的方法,可以实现这样的连接:OPENROWSET
所以问题是:
PostgreSQL可以在两个程序之间执行连接,直到运行时才能知道这些列吗?
它可以做同样的事情,除了使用驻留在外部第三方数据库中的存储过程(可能通过外部数据包装器或其他一些机制)?
- PostgreSQL可以在两个程序之间执行连接,其中直到运行时才知道列?
基本答案很简单,因为Postgres 目前没有存储过程(直到Postgres 10),只有函数 - 它提供的功能几乎但不完全相同,正如你在问题中所阐述的那样.
并且任何函数都可以像任何其他表一样FROM在SELECT查询的子句中使用.
更新:
SQL程序("存储过程")引入在Postgres 11.
为手动CREATE PROCEDURE.
SQL本身要求在运行时知道返回类型.有一个边框大小写:您可以使用多态类型使用函数调用声明返回类型.这里有详细说明(最后一章与您最相关):
- 它可以做同样的事情,除了使用驻留在外部第三方数据库中的存储过程(可能通过外部数据包装器或其他一些机制)?
基于同样的原则,这也是一个NO.如果使用外部表,则必须以一种或另一种方式提供明确定义的返回类型.
您也许能够从一个SQL Server的存储过程导致整排放到一个单一制表符分隔文本表示,但后来(除了是容易出错且效率低下),你有一列,需要定义的元信息各列提取列的一种或另一种方法 - 捕获22.