【发布时间】:2017-10-19 18:25:53
【问题描述】:
我需要一种方法来从 SELECT 查询(游标)中获取列的“描述”,例如它们在 PostgreSQL(或更好的 PL/pgSQL)中的名称、数据类型、精度、比例等。
我正在从 Oracle PL/SQL 过渡,在那里我可以使用内置过程 dbms_sql.describe_columns 获得此类描述。它返回一个记录数组,一个给定(已解析)游标的每一列。
此类查询的示例:
select col1 from tab where col2 = :a
我需要一个可以像这样调用的 API(或解决方法)(希望如此):
select query_column_description('select col1 from tab where col2 = :a');
这将返回类似于:
{{"col1","numeric"}}
为什么?我们构建视图,其中这些查询成为单独的列。例如,视图的查询如下所示:
select (select col1 from tab where col2 = t.colA) as col1::numeric
from tab_main t
【问题讨论】:
-
使用 psycopg2 (stackoverflow.com/questions/10252247/…) 可以获得类似的东西,但我希望我可以留在 PL/pgSQL 中,所以我不必处理(安装/学习/等)psycopg2只是为了这个(也许还有一些我还没有发现的很酷/需要的功能)
-
服务器端没有内置任何东西。在客户端,我知道 JDBC 可以做到这一点,我猜 ODBC 也是如此。我假设这两个接口都使用SPI。
-
如果您觉得可以,请为答案投票。谢谢。
标签: postgresql cursor