【发布时间】:2016-02-27 00:37:47
【问题描述】:
这个问题与之前的一个问题有关:Why is selecting from stored procedure not supported in relational databases?
在 SQL Server 上,您不能执行连接(或从中选择)存储过程(请注意:存储过程与函数(表SQL Server 术语中的值函数)- 使用函数,您知道在设计时返回的列,但使用过程,要返回的特定列直到运行时才知道)。
对于 SQL Server,确实存在一种“DBA 通常不允许”的方法,可以在其中完成这样的连接:OPENROWSET
所以问题是:
PostgreSQL 能否在两个过程之间执行连接,其中列直到运行时才知道?
除了使用驻留在外部 3rd 方数据库中的存储过程(可能通过外部数据包装器或其他机制)之外,它是否可以这样做?
【问题讨论】:
-
为什么用 Oracle 标记?
-
你想做什么,为什么要加入存储过程?如果你不会写函数或视图,那很有可能是你做错了什么
-
DBA 和高级开发人员讨厌
OPENROWSET,因为这意味着无法进行优化或索引,并且所有数据都必须在类似游标(即慢速)循环中处理。 -
“你想做什么” - 很多时候你不是从头开始编写代码,你必须使用第三方编写的 SP 或系统过程(可能应该写成函数但不是。)
标签: sql sql-server database postgresql foreign-data-wrapper