我需要一种方法来获得"描述" 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
答案 0 :(得分:0)
http://sqlfiddle.com/#!17/21c7a/2
您可以使用系统表:
第一步用您的查询创建一个临时视图(没有子句在哪里)
create or replace view temporary view a_view as
select col1 from tab
然后选择
select
row_to_json(t.*)
from (
select
column_name,
data_type
from
information_schema.columns
where
table_schema = 'public' and
table_name = 'a_view'
) as t