postgresql - 获取 Postgresql SELECT 查询中所有已用表的列表

标签 postgresql delphi lazarus

有没有办法在不使用实际 SQL 解析器的情况下获取 Postgesql 中复杂 SELECT 查询中使用的所有表?版本将使用9.5及以上版本。

最佳答案

尝试:

create or replace function get_query_tables(p_query text) returns text[] language plpgsql as $$
declare
  x xml;
begin
  execute 'explain (format xml) ' || p_query into x;
  return xpath('//explain:Relation-Name/text()', x, array[array['explain', 'http://www.postgresql.org/2009/explain']])::text[];
end $$;

select get_query_tables('your query here');

dbfiddle

关于postgresql - 获取 Postgresql SELECT 查询中所有已用表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811335/

相关文章:

forms - 如何在 Windows 10 上从可调整大小的表单中删除顶栏?

windows - 在 Windows 操作系统上将 SDL 与 FreePascal 链接(使用 Lazarus)

delphi - 使用指针和资源字符串

postgresql - Postgres colpivot 函数不返回任何内容

sql - 如何在postgresql中的单个函数中编写多个查询

sql - PostgreSQL 将行转置为列

delphi - 如何让 Flash 与 Chromium 一起工作?

multithreading - Delphi指针内存和释放

ruby-on-rails - 延迟作业 : can't run rake jobs:work

windows - 有没有什么简单的方法可以在Lazarus代码中使用FTP功能