我需要一种方法来从SELECT查询(游标)中获取列的“描述”,例如它们的名称,数据类型,精度,比例等,在PostgreSQL(或更好的PL/pgSQL)中。如何在PostgreSQL中描述SQL查询的列(获取它们的名称,数据类型等)
我正在从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(https://stackoverflow.com/questions/10252247/how-do-i-get-a-list-of-column-names-from-a-psycopg2-cursor),但我希望我能保持在PL/pgSQL中,所以我不必为此处理(安装/学习/等)psycopg2(也许还有一些其他很酷/我需要发现的功能) –
有没有内置在服务器端。在客户端,我知道JDBC可以做到这一点,我也猜测ODBC。我假设这两个接口都使用[SPI](https://www.postgresql.org/docs/current/static/spi-interface-support.html)。 –
如果你没有问题,请提出答案。谢谢。 – Indent