在PostgreSQL中描述结果集?

问题描述 投票:4回答:2

在Microsoft Sql Server中,有一个proc sys.sp_describe_first_result_set,它接受任意sql查询字符串并返回描述结果集中类型的数据,如果要执行的话。注意,这是描述复杂查询的结果,而不是表。 MSDN reference

Postgres有类似的东西吗?

sql-server postgresql
2个回答
0
投票

at the protocol level - 在Describeextended query protocol消息的形式。

我不知道任意SQL字符串的任何SQL级别的等价物。但是好主意;在pgsql-general上提高它。我怀疑它很容易实现。

事实上,快速浏览exec_describe_statement_message中的src/backend/tcop/postgres.c表明,大脑位于SendRowDescriptionMessagesrc/backend/access/common/printtup.c。编写一个简单的C扩展来完成类似的工作并生成结果集应该不难。如果你熟悉代码库,希望工作几个小时;这个想法是:

  • 将SQL字符串输入解析器/重写器/规划器以获取计划
  • 查找顶级节点的目标列表(如果有)。这将是DML的RETURNING节点,或Query的顶级SELECT tlist。
  • 将tlist输入ExecTypeFromTL
  • 循环遍历tupledesc条目,通过在tlist中查找它们来跳过resjunk列,并为查询中的每个非resjunk输出发出一行。

0
投票

我尝试通过创建存储过程来创建temperory view,然后在删除视图之前检查information_schema.columns。

© www.soinside.com 2019 - 2024. All rights reserved.